Jos*_*ech 7 ruby-on-rails nested-attributes ruby-on-rails-3
我在show.erb中嵌套了属性,并创建了一个空白的嵌套属性,并显示了底部空白的项目网格,如此.
<%= form_for @question do |q| %>
<% q.fields_for :answers, @question.answers do |l| %>
<tr>
<td><%= l.text_field :text %></td>
<td><%= l.check_box :correct %></td>
<td><%= l.text_field :imagename %></td>
<td><%= l.number_field :x %></td>
<td><%= l.number_field :y %></td>
</tr>
<% end %>
<tr>
<td colspan=5 align=right><%= submit_tag '+' %>
</tr>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我想要一个link_to'Destroy'工作,但是undefined method 'plural'当我将它添加到网格时我得到了
<%= link_to 'Destroy', l, :controller => "answer", :confirm => 'Are you sure?', :method => :delete %>
Run Code Online (Sandbox Code Playgroud)
Jim*_*nke 22
为什么要使用链接?您还可以在嵌套属性中使用destroy功能.
您需要做的就是添加:allow_destroy => true您的accepts_nested_attributes定义并添加
<%= l.check_box '_destroy' %>
Run Code Online (Sandbox Code Playgroud)
到每条记录.这样,它会在保存记录时删除所有嵌套记录并选中复选框.
对于那些从谷歌发现这一点的人来说,虽然技术上删除复选框可能是正确的方式,但我认为这是令人困惑的 - 唯一的好处是需要两次点击才能删除(选择框并点击更新).最好只确保删除是清楚发生的事情,并可能添加一个简单的方法来恢复它.
以下是将更新作为ajax发送到服务器,以处理更新回调或js视图文件中的页面.删除remote:true,它将作为常规链接.
# For my form I build a new object if it's missing,
# so I need to check that this is not a new nested attribute.
- unless question.answers.new_record?
# Basically, I am sending over the fields that would be sent
# by the _delete check box form being updated.
= link_to "Delete", question_path(question.id, question: { answers_attributes: { id: question.answers.id, "_destroy" => true }}), remote: true, confirm: "Really delete?", method: :put
Run Code Online (Sandbox Code Playgroud)