2

アカウント、キャンペーン、accounts_campaignsの3つのテーブルがあります。キャンペーン編集フォームで選択したアカウントのチェックボックスをオンにしたい。

私は次のようなキャンペーンのモデルを持っています:

class Campaign < ActiveRecord::Base
  has_and_belongs_to_many :accounts
  accepts_nested_attributes_for :accounts
end

アカウントで関係を定義する必要はないと思います。

そして私のフォームは:

= hidden_field_tag "campaign[accounts_ids][]", nil
  - Account.all.each do |account|
    %label.checkbox
      = check_box_tag "campaign[accounts_ids][]", account.id, @campaign.account_ids.include?(account.id),
      id: dom_id(account)
      = "#{account.name} - #{account.email}"

しかし、私はこのエラーを受け取りました:

unknown attribute: accounts_ids
4

1 に答える 1

2

さて、ついに私はそれを手に入れました、has_manyを使用する必要はありません:多くの人が推奨するので、これはHABTM(多くに属し、多くは多くあります)関係の選択項目のチェックボックスを追加するために可能な最も簡単なセットアップです。

要約すると、キャンペーンで使用するアカウントを選択するためのチェックボックスをキャンペーンに設定したいと思います。

まず、チェックボックスを追加するフォームのモデルで

class Campaign < ActiveRecord::Base
  has_many :mail_sequences, order: 'step'
  has_and_belongs_to_many :accounts
  accepts_nested_attributes_for :accounts
end

第二に、他のモデル(アカウント)で関係を作成する必要はありません

第三に、フォームでは、これはhamlです(これはおそらく最適化できます):

  = hidden_field_tag "campaign[account_ids][]", nil
  - Account.all.each do |account|
    %label.checkbox
      = check_box_tag "campaign[account_ids][]", account.id, @campaign.account_ids.include?(account.id),
      id: dom_id(account)
      = "#{account.name} - #{account.email}"
于 2012-10-18T18:27:47.410 に答える