具有嵌套属性的两次滚动表单

问题描述 投票:0回答:1

将Rails表单与嵌套表单集成在一起,一切工作正常,但是记录被保存了多次。

app / models / user.rb

has_many :badges, :dependent => :destroy
accepts_nested_attributes_for :badges, :allow_destroy => true, reject_if:  proc { |attributes| attributes['badge_type'] == "0" }

app / models / badge.rb

belongs_to :user_id

app / controllers / user_controller.rb

def new
    @user = User.new
    @user.badges.build
end

private
def user_params
    params.require(:user).permit(:name,:email,badges_attributes: [:id, :badge_type,:_destroy])
end   

app / views / users / _form.html.erb

<%= f.fields_for :badges do |ff| %>
    <%= ff.check_box :badge_type %>
    <label>Admin</label>
<% end %>

但是它将保存记录两次。如何解决?

ruby-on-rails ruby ruby-on-rails-3 has-many
1个回答
0
投票

[创建新的User时,只需将:badges属性作为user_params的一部分传递

user_controller.rb

def create
  @user = User.new(user_params)
  @user.save
end

def user_params
  params.require(:user).permit(:name, :phone, :email, attributes_for_badges: %i[id badge_type _destroy])
end
© www.soinside.com 2019 - 2024. All rights reserved.