2010-12-08 36 views
8

我有一個由Rails 3腳手架生成的視圖的基本設置。它給了我一個局部視圖_form.html.erb。我的edit.html.erb和我的new.html.erb呈現此部分視圖。軌道3中的部分形式需要不同的鏈接,具體取決於新建或編輯

在局部視圖,我想有一個的link_to即前進到不同的路徑取決於如果它正在由新編輯視圖中呈現。

有沒有簡單的方法來做到這一點?

我的代碼目前看起來像這樣,但不允許不同的路徑。

<%= f.submit %> or <%= link_to 'Go back', models_path %> 

如果有幫助,我想送他們回到他們原來的頁面(他們來自不同的地方添加和編輯)

回答

43

您可以使用form.object.new_record?而不是params [:action]知道您是否正在編輯或創建(編輯視圖與新視圖)。

如:

<%= simple_form_for(@item) do |f| %> 
    <% if @item.new_record? %> 
     <%= f.input :lost_time, input_html: { value: DateTime.now } %> 
    <% else %>      
     <%= f.input :lost_time, input_html: { value: @item.lost_time } %>  
    <% end %> 
<% end %> 
4

我不是那個熟悉的軌道3。但希望這對你的作品

<% if params[:action] == 'new' %> 
    # code for new 
<% elsif params[:action] == 'edit' %> 
    # code for edit 
<% end %> 

GOOD LUCK:d

+0

這不是因爲在驗證失敗時和動作是創建或更新 – axelarge 2011-08-13 15:46:15

0

看一看link_to(:back)

這可能是你在這裏需要的。

+0

這不是出於安全和合理的理由認爲最好的解決辦法也不會顯示任何鏈接所有的最佳解決方案。 「當使用redirect_to:back時,如果沒有引用者,則會引發RedirectBackError。您可以通過挽救RedirectBackError來爲這種情況指定一些回退行爲。」 – nanda 2010-12-09 00:28:31

+0

我後來重構並最終將路徑作爲本地參數傳遞給窗體,如果我在各種地方使用窗體,則完全控制。 – 2011-02-03 22:38:40

相關問題