0

完整的相关代码在这里

我的问题是,我正在尝试从Railscast 196重建一些东西,以在我的表单中获取多个嵌套表单 for Campaign。每个Campaign人都可以通过CampaignTeam. 此外,Campaign它依赖于客户端,没有它,它就无法存在。

# config/routes.rb
resources :clients do
  resources :campaigns
end

现在,使用上面的代码(我不想用它来混淆这个问题),我得到一个错误:Can't mass-assign protected attributes: campaign_team. 当我添加时attr_accessible :campaign_team,我得到unknown attribute: campaign_team.

我怎样才能让rails最终吃掉这个表格,然后只CampaignTeam用一个成员嵌套一个数组?我在这里做错了什么?

(很抱歉现在在这个单一的表格上呆了三个小时,非常沮丧)

4

2 回答 2

0

如果您只是添加现有团队,则可以使用 collection_select,然后添加

attr_accessible :teams_ids

另一方面,如果你需要创建团队,你需要

accept_nested_attributes_for :teams

(这一切都取决于你has_many :teams, :through => :campaign_teamsCampaign课堂上设置的)

于 2012-10-01T12:05:51.493 回答
0

我已经解决了这个问题。在控制器中,我在控制器中进行了更改

def new
  @client = Client.find params[:client_id]
  @campaign = @client.campaigns.build
  @campaign.campaign_teams.build          # New line
end

然后将第new.html.haml15 行更改为

=f.fields_for :campaign_teams do |b|

不是它工作正常。

于 2012-10-01T18:06:29.403 回答