Rails 4 nested attributes multiple records when updating

I am stuck and I don’t know why it is not working properly. I have a model product that has a lot of tags. When I update the product rails, I update the product attributes correctly, but create another tag entry instead of just updating it.

here is my code:

View Form:

<%= form_for ([@product.user, @product]), id: 'edit_form' do |f| %> <%= render 'shared/error_messages', object: f.object %> <div class="field"> <%= f.label :name %><br> <%= f.text_field :name %> </div> <div class="field"> <%= f.label :description %><br> <%= f.text_area :description %> </div> <div class="field"> <%= f.fields_for :tags do |t| %> <%= t.label :name %> <%= t.text_field :name %> <% end %> </div> <div class="actions"> <%= f.submit %> </div> <% end %> 

product model:

  class Product < ActiveRecord::Base belongs_to :user, :foreign_key => "user_id" has_many :tags, :dependent => :destroy accepts_nested_attributes_for :tags, reject_if: :all_blank, allow_destroy: true, :update_only => true end 
Tag model

:

  class Tag < ActiveRecord::Base belongs_to :product, :foreign_key => "product_id" # before_save { name.downcase! } end 

product controller:

  def edit user = User.find(params[:user_id]) @product = user.products.find(params[:id]) @tags = @product.tags.all respond_to do |format| format.html format.js end end def update user = User.find(params[:user_id]) @product = user.products.find(params[:id]) @tags = @product.tags.all respond_to do |format| if @product.update(product_params) format.html { redirect_to([@product.user, @product], :notice => 'Product successfully updated.') } else format.html { render :action => "edit" } end end end def product_params params.require(:product).permit(:name, :description, tags_attributes: :name) end 

Thank you very much

+4
source share
1 answer

You must pass the tag id in the resolution settings in the controller

 def product_params params.require(:product).permit(:name, :description, tags_attributes: [:id,:name]) end 
+20
source

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


All Articles