我在使用rails创建的表单中的部分使用:collection命令时遇到问题。我理想情况下喜欢使用:collection命令,因此我可以在我的.rjs模板中轻松操作此部分(当复选框更改时,表单将提交并重新加载表单,这是一个待办事项列表。)
此代码有效:
<% 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 %>
with partial:
<% 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 var不存在或者不响应to_param:nil。它指的是这一行:<li><%= f.check_box :completed %>
。我不确定为什么这不起作用并尝试了很多不同的变化,但我不能让它工作。表格是否阻止我这样做? form_for代码直接来自Rails Way书籍,用于列出表单中一个模型的多个对象。
对此的任何帮助将不胜感激。
答案 0 :(得分:3)
我认为问题是当你使用render时,你没有在任何地方定义@list:part with a:collection。
当您调用f.check_box
时,系统正在寻找@list以匹配列表[]你可以在你的部分中设置@ list = list来解决这个问题。我想。
答案 1 :(得分:0)