"动态选项创建" (select2)& collection_select

时间:2018-04-09 01:15:04

标签: ruby-on-rails

我已经在我的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(?,?,?,?,?)

1 个答案:

答案 0 :(得分:0)

好的 - 想出来(经过多次试用和错误!)

基本上,我使用了find_or_initialize_by并且它实现了一个梦想(在重新设计控制器和查看之后)