Cannot assign protected attributes in bulk: tags_attributes?

I am trying to create tags for posts following the Rails Guide :

tag.rb:

class Tag < ActiveRecord::Base attr_accessible :name belongs_to :post end 

post.rb:

 class Post < ActiveRecord::Base attr_accessible :title, :content, :tags validates :title, :presence => true, :length => { :maximum => 30 }, :uniqueness => true validates :content, :presence => true, :uniqueness => true belongs_to :user has_many :comments, :dependent => :destroy has_many :votes, :as => :votable, :dependent => :destroy has_many :tags accepts_nested_attributes_for :tags, :allow_destroy => :true, :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } } end 

views / posts / _form.html.erb:

 <% @post.tags.build %> <%= form_for(@post) do |post_form| %> <%= render 'shared/error_messages' %> <div class="field"> <%= post_form.label :title %><br /> <%= post_form.text_field :title %> </div> <div class="field"> <%= post_form.label :content %><br /> <%= post_form.text_area :content %> </div> <h2>Tags</h2> <%= render :partial => 'tags/form', :locals => {:form => post_form} %> <div class="actions"> <%= post_form.submit %> </div> <% end %> 

opinions / tags / _form.html.erb:

 <%= form.fields_for :tags do |tag_form| %> <div class="field"> <%= tag_form.label :name, 'Tag:' %> <%= tag_form.text_field :name %> </div> <% unless tag_form.object.nil? || tag_form.object.new_record? %> <div class="field"> <%= tag_form.label :_destroy, 'Remove:' %> <%= tag_form.check_box :_destroy %> </div> <% end %> <% end %> 

But I get this error when I try to create tags:

It is not possible to assign protected attributes in bulk: tags_attributes Rails.root: / Home / Alex / Rails / r7

Application Trace | Frame Track | Full trace app / controllers / posts_controller.rb: 25: in `create 'Request

Parameters:

{"utf8" => "✓", "Authenticity_token" => "VF / qlfZ4Q5yvPY4VIbpFn65hoTAXdEa4fb4I1Ug4ETE =", "post" => {"title" => "post number 5", "content" => "post number post post number 5, number 5 "," tags_attributes "=> {" 0 "=> {" name "=>" food, drinks "}}}," commit "=>" Create message "}

Any suggestions for fixing this issue?

+6
source share
4 answers

Attr_accessible indicates that you cannot assign array attributes. Here you need to make post_id as attr_accessible. Please refer to the WARNING. Protected attributes cannot be assigned .

+6
source

Just put: tags_attributes instead of: tags. See below. This will solve the problem, just like me.

 class Post < ActiveRecord::Base attr_accessible :title, :content, :tags_attributes end 
+13
source

This worked for me:

 class Post < ActiveRecord::Base attr_accessible :name, :title, :content, :tags_attributes end 
+6
source

This worked for me too:

 class Post < ActiveRecord::Base attr_accessible :title, :content, :tags_attributes end 

This allows you to retrieve tag attributes through Post.

+1
source

Source: https://habr.com/ru/post/909330/


All Articles