简体   繁体   中英

Nested Model Form Error

I have a nested model form that throws the error "undefined method 'media_type' for #<Array:0x1060460d0>" when calling update_attributes. What is wrong with the media_type association?

class Publication < ActiveRecord::Base
  has_many :products
  accepts_nested_attributes_for :products, :allow_destroy => true
end

class Product < Offering
  belongs_to :media_type
end

class Offering < ActiveRecord::Base
  belongs_to :publication
end

class MediaType < ActiveRecord::Base
  belongs_to :meaning
  has_many :products
end

Here is what I am submitting to the form.

{"commit"=>"Commit changes",
 "_method"=>"put",
 "authenticity_token"=>"e2/62ffmRVuNsCVP65zy4SLprWgRSa+DdLc2RXzM+UQ=",
 "id"=>"628",
 "publisher_publication"=>{"edition_attributes"=>{"title"=>"this is the title",
 "short_description"=>"this is the description",
 "abstract"=>"",
 "subtitle"=>"",
 "id"=>"200",
 "long_description"=>"",
 "title_prefix"=>"",
 "work_attributes"=>{"id"=>"200"}},
 "volume"=>"",
 "issue"=>"",
 "date_published"=>"2006-09-20",
 "products_attributes"=>{"1289147822429"=>{"price"=>0,
 "document"=>#<File:/var/folders/e9/e965IrazFgu0fm-rjRtvIk+++TI/-Tmp-/RackMultipart20101107-638-1vffwzk-0>,
 "media_type_id"=>"1"}},
 "imprint_id"=>"3"}}

Here is my controller action.

def update
  @publication = Publisher::Publication.find(params[:id])

  if @publication.update_attributes(params[:publisher_publication])
    flash[:notice] = "Successfully updated publication and products."
    redirect_to(publisher_publication_url(@publication))
  else
    render :action => 'edit'
  end
end

I just solved a similar problem by troubleshooting it with rails console ...

Maybe this will help you too.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM