Can't mass-assign these protected attributes: tag_attributes

Hi, I added a textarea to my edit student form, to be able to add tags to this student. I did the simple code below, and this is the error i get. I can't see what i did wrong...

#Error message Processing StudentsController#update (for 127.0.0.1 at 2010-02-14 10:13:22) [PUT]   Parameters: {"commit"=>"Submit", "authenticity_token"=>"PNvzBi6Ro1XJg0c6CfgKsEw+wfg6DwZfnV2FUpRgqPs=", "id"=>"1", "student"=>{"full_name"=>"Gregory ", "cb_id"=>"68", "tag_attributes"=>"greg,toto", "description"=>"voila une jolie description"}}   Student Columns (12.8ms) SHOW FIELDS FROM `students`   Student Load (0.3ms) SELECT * FROM `students` WHERE (`students`.`id` = 1) WARNING: Can't mass-assign these protected attributes: tag_attributes

#Html form <% form_for @student do |f| %>   <%= f.error_messages %>   <p>     <%= f.label :cb_id %><br />     <%= f.text_field :cb_id %>   </p>   <p>     <%= f.label :full_name %><br />     <%= f.text_field :full_name %>   </p>   <p>     <%= f.label :description%><br />     <%= f.text_area :description %>   </p>   <p>   <%= text_area_tag "student[tag_attributes]" %>

  <p><%= f.submit "Submit" %></p> <% end %> #END

#Student Class class Student < ActiveRecord::Base   has_and_belongs_to_many :data_files   has_and_belongs_to_many :tags

  attr_accessible :cb_id, :full_name, :description

  validates_uniqueness_of :cb_id

  def tag_attributes=(tags)     splits = tags.split(',')     splits.each do |tag|       Tag.build(tag)     end   end end #END

Thanks for your help Greg

Hi, I added a textarea to my edit student form, to be able to add tags to this student. I did the simple code below, and this is the error i get. I can't see what i did wrong...

#Error message Processing StudentsController#update (for 127.0.0.1 at 2010-02-14 10:13:22) [PUT] Parameters: {"commit"=>"Submit", "authenticity_token"=>"PNvzBi6Ro1XJg0c6CfgKsEw+wfg6DwZfnV2FUpRgqPs=", "id"=>"1", "student"=>{"full_name"=>"Gregory ", "cb_id"=>"68", "tag_attributes"=>"greg,toto", "description"=>"voila une jolie description"}} Student Columns (12.8ms) SHOW FIELDS FROM `students` Student Load (0.3ms) SELECT * FROM `students` WHERE (`students`.`id` = 1) WARNING: Can't mass-assign these protected attributes: tag_attributes

#Html form <% form_for @student do |f| %> <%= f.error_messages %> <p>    <%= f.label :cb_id %><br />    <%= f.text_field :cb_id %> </p> <p>    <%= f.label :full_name %><br />    <%= f.text_field :full_name %> </p> <p>    <%= f.label :description%><br />    <%= f.text_area :description %> </p> <p> <%= text_area_tag "student[tag_attributes]" %>

<p><%= f.submit "Submit" %></p> <% end %> #END

#Student Class class Student < ActiveRecord::Base has_and_belongs_to_many :data_files has_and_belongs_to_many :tags

attr_accessible :cb_id, :full_name, :description

You either need to add :tag_attributes to this list to make it accessible for mass updates...

Or, in the controller code that you didn't show, pluck the tag_attributes out:    tag_attributes = params[:student].delete('tag_attributes') before you call @student.update_attributes(params[:student]) and add a call to:    @student.tag_attributes = tag_attributes

-Rob

validates_uniqueness_of :cb_id

def tag_attributes=(tags)    splits = tags.split(',')    splits.each do |tag|      Tag.build(tag)    end end end #END

Thanks for your help Greg -- Posted via http://www.ruby-forum.com/.

-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com

I think you need to add :tag_attributes to attr_accessible in your model – would this fix the problem?

Lasse

Lasse Bunk wrote:

I think you need to add :tag_attributes to attr_accessible in your model – would this fix the problem?

Lasse

it works! Thanks