Unknown attribute: version (nested forms)

I try to update a nested model (version) and get this error. any tips
would be great!

my models: location has_many :versions

view

<% form_for location do |location_form| %>


  • <%= location_form.label location.section %>

  • <%= location_form.label location.sub_section %>

  • <%= location_form.label location.place_holder %>

<div class="content-area">
   <% location.versions.each do |version| %>
      <div class="content" >
        <% location_form.fields_for version do |version_form| %>
          <%= version_form.label version.environment %>
          <%= version_form.text_area :content %>
        <% end %>
      </div>
  <% end %>
  <%= submit_tag %>
</div>

<% end %>

#controller

def update
@location = Location.find(params[:id])
@location.update_attributes(params[:location]) #error: unknown
attribute: version
redirect_to( locations_path )
end

the params

{“location”=>{“version”=>{“content”=>“hello human. glass robot want
you to join Glass”}}, “commit”=>“Save changes”,
“authenticity_token”=>“l59NxAeIeHnvaVt+1xQV2e9NpDIS8nPpQ4RY+hU0k7w=”,
“id”=>“2”}

Where’s the error message?

ActiveRecord::UnknownAttributeError in LocationsController#update

unknown attribute: version

RAILS_ROOT: /home/oren/misc/projects/borderstylo/content

/opt/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/
active_record/base.rb:2746:in attributes=' /opt/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/ active_record/base.rb:2742:ineach’
/opt/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/
active_record/base.rb:2742:in attributes=' /opt/ruby-1.8.7-p72/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/ active_record/base.rb:2628:inupdate_attributes’
/home/oren/misc/projects/borderstylo/content/app/controllers/
locations_controller.rb:29:in `update’

Hi Oren,

Try this “accepts_nested_attributes_for :versions” in the location.rb
file.

Cheers!

I already have this:

has_many :versions, :dependent => :destroy
accepts_nested_attributes_for :versions

This is how I did my nested forms (actually I have 3 forms nested):

<% form_for [@resource, @validity] do |f| %>
<% f.fields_for :timesheets do |t| %>
<% t.fields_for :values do |v| %>
R$ <%= v.text_field :value, :maxlength=>10 %>
<% end %>
<% end %>
<%= f.submit “Save” %>
<% end %>

resource has_many validities
validity has_many timesheets
timesheet has_many values

I use version and not :vorsion here: (since i believe i need to
provide an object)
location_form.fields_for version do |version_form|

could it be related to the issue?

It works now. I had 2 loops and had to remove the external one:
<% location.versions.each do |version| %>

fields_for already create a loop on the children, so there is no need
for another loop.

thanks!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs