redirect_to 和 render 有什麼不同

redirect_to 可以視為跳轉到別頁。包括跳轉到別的網站也是用 redirect_to 。因此使用 redirect_to 會造成 URL 的改變。

render 則是用於告訴 Rails "我要顯示什麼樣的畫面 / 資料在 browser 上" 而事實上 Rails 本身在每一個 controller action 都自動進行尋找並 render 對應的 template。所以 render 不會造成 URL 的改變。

額外一提的是 render 會把之前在 form 裡填寫的內容一併顯示。對於註冊流程或是使用者體驗上是相當方便的。

以實際例子來看

def create
  @user=User.new(params[:user])
  if @user.save
     redirect_to :index
  else
     render :new  #you should render to fill fields after error message
  end
end

如果 @user.save 成功了,就跳轉到 index action。
如果 @user.save 失敗了,就 render "new" 這個 action 的 template
( 也就是 create 的上一步,此時可注意 URL 還是會在 create 的 path )

results matching ""

    No results matching ""