我有三个表,帐户,广告系列和accounts_campaigns。我希望在广告系列修改表单中为选定帐户设置复选框。
我有这样的广告模型:
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
答案 0 :(得分:2)
好吧,最后我明白了,没有必要使用has_many:通过尽可能多的人推荐,这是最简单的设置,我认为可以为HABTM上的选择项添加复选框(已经属于许多,很多有很多关系。
总结一下,我希望在Campaig上设置复选框,以选择广告系列将使用的帐户。
首先,在您要添加复选框的表单的模型上
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}"