【发布时间】:2020-05-17 17:02:56
【问题描述】:
将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
def create
@user = User.new(user_params)
@user.save!
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