我已经在我的rails网站上成功运行了select2 gem,并且还成功利用了"动态选项创建"在一个基本的"选择"方法
我想尝试添加"动态选项创建"到了collection_select,但我正在打砖墙。我有一种感觉,我需要使用" .find_or_create_by"在我的控制器里。
感谢任何帮助 - 以下是我现有的代码。每个" BusinessOwner"有一个组,我希望用户在创建新的" BusinessOwner"
时能够添加新组(当不在列表中时)在代码中,我尝试用BusinessOwner.find_or_create_by替换BusinessOwner.new,如果使用现有的"组"它工作正常,但如果我尝试添加一个新的"组"它返回错误> " FOREIGN KEY约束失败"
CONTROLLER>
def create
@Owner = BusinessOwner.new(owner_params)
if @Owner.save
redirect_to business_index_path, notice: 'success'
else
flash[:alert] = 'issue'
render :new
end
end
def owner_params
params.require(:business_owner).permit!
end
查看>
<%= f.collection_select :group_id, Group.all, :id, :name, {prompt: "Select a Group"}, {class: "form-control dynamic-form"} %>
BusinessOwner MODEL&gt;
class BusinessOwner < ApplicationRecord
has_many :businesses
has_many :business_owners
has_many :owners, :through => :business_owners
belongs_to :group, optional: true
end
Erro在试图添加新的&#34; Group&#34; (在更改为BusinessOwner.find_or_create_by(owner_params)&gt;
之后SQLite3 :: ConstraintException:FOREIGN KEY约束失败:INSERT INTO&#34; business_owners&#34; (&#34; group_id&#34;,&#34; name&#34;,&#34; created_at&#34;, &#34; updated_at&#34;)VALUES(?,?,?,?,?)
答案 0 :(得分:0)
好的 - 想出来(经过多次试用和错误!)
基本上,我使用了find_or_initialize_by并且它实现了一个梦想(在重新设计控制器和查看之后)