Rails で作成しているフォーム内のパーシャルに対して :collection コマンドを使用すると問題が発生します。理想的には :collection コマンドを使用したいので、.rjs テンプレートでこのセクションを簡単に操作できます (チェック ボックスが変更されるとフォームが送信され、フォームが再読み込みされます。これは to-do リストです)。
このコードは機能します:
<% form_for "list[]", :url => {:action => "checkbox_update"} do |f| %>
<ul id="lists_not_completed">
<% for @list in @lists %>
<%= render :partial => @list, :locals => {:f =>f, :complete => FALSE } %>
<% end %>
</ul>
<% end %>
部分的に:
<% if @list.completed == complete %>
<li><%= f.check_box :completed %>
<%=h @list.name %>
<%= link_to 'Show', list %>
<%= link_to 'Edit', edit_list_path(list) %>
<%= link_to 'Destroy', list, :confirm => 'Are you sure?', :method => :delete %></li>
<% end %>
このコードは機能しませんが、次の形式を使用したいと思います。
<% form_for "list[]", :url => {:action => "checkbox_update"} do |f| %>
<ul id="lists_not_completed">
<%= render :partial => 'list', :collection => @lists, :locals => {:f =>f, :complete => FALSE } %>
</ul>
<% end %>
非動作部分で:
<% if list.completed == complete %>
<li><%= f.check_box :completed %>
<%=h list.name %>
<%= link_to 'Show', list %>
<%= link_to 'Edit', edit_list_path(list) %>
<%= link_to 'Destroy', list, :confirm => 'Are you sure?', :method => :delete %></li>
<% end %>
エラーが発生します:
object[] という名前ですが、object param と @object var が存在しないか、to_param: nil に応答しません。この行を参照しています: <li><%= f.check_box :completed %>
. なぜこれがうまくいかないのか、さまざまなバリエーションを試してみましたが、うまくいきません。フォームが原因でこれを実行できませんか? form_for コードは、1 つのモデルから複数のオブジェクトをフォームにリストするための Rails Way book から直接引用したものです。
これに関するヘルプは大歓迎です。