Adding a delete link for nested attributes

Joseph Le Brech picture Joseph Le Brech · Aug 22, 2011 · Viewed 12.1k times · Source

I have nested attributes in my show.erb and I create a blank nested attribute and show a grid of items with the blank at the bottom like so.

<%= 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 %>

I want a link_to 'Destroy' to work but i'm getting undefined method 'plural' when i add this to the grid

<%= link_to 'Destroy', l, :controller => "answer", :confirm => 'Are you sure?', :method => :delete %>

Answer

Jimmy Stenke picture Jimmy Stenke · Aug 22, 2011

Why do you want to use a link? You can also use the destroy functionality in the nested attributes.

All you need to do is to add :allow_destroy => true in your accepts_nested_attributes definition and add

<%= l.check_box '_destroy' %>

to each record. That way it removes all the nested records with the check-box checked when saving the record.