9

Rails3スキャフォールディングによって生成されたビューの基本的なセットアップがあります。部分ビュー_form.html.erbが表示されます。edit.html.erbnew.html.erbの両方が、この部分的なビューをレンダリングします。

部分ビューでは、新しいビューと編集ビューのどちらでレンダリングされているかに応じて、異なるパスに移動するlink_toが必要です。

これを行う簡単な方法はありますか?

私のコードは現在このように見えますが、異なるパスを許可していません。

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

それが助けになるなら、私は彼らを彼らが来たページに送り返そうとしています(彼らは追加と編集のために異なる場所から来ています)

4

3 に答える 3

48

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 %>
于 2010-12-08T14:19:21.730 に答える
5

私はrails3にあまり詳しくありません。しかしこれがあなたのために働くことを願っています

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

幸運:D

于 2010-12-08T12:18:54.837 に答える
0

link_to(:back)を見てください。

それはあなたがここで必要とするものかもしれません。

于 2010-12-08T12:33:29.887 に答える