2013-06-28 91 views
0

假设我有三个模型,Campaign,由拥有者User创建,并且有很多成员(以用户身份)由Membership表示。在导轨中嵌套模型问题

的第一个广告设置这个说法

belongs_to :user 
    has_many :memberships 
    has_many :users, :through => :memberships 
    accepts_nested_attributes_for :memberships 

第二用户这个说法

has_many :memberships 
has_many :campaigns, :through => :memberships 

第三会员

belongs_to :user 
belongs_to :campaign 

现在我要定义一个嵌套形式当创建活动时,允许活动创建者在所有用户中选择一些成员的活动。所以我设置

= form_for @campaign do |f| 
    = f.text_field :owner, placeholder: "Example Owner", class: "xxlarge" 
    - @users.each_value do |value| 
     = f.fields_for :memberships do |ff| 
      = ff.check_box :user_id 

其中@usersCampaign控制器的new方法设定为这样

@users = User.all 

的问题是,我有一个错误消息

完成在500内部服务器错误113ms

ActionView::Template::Error (Illegal nesting: nesting within plain text is illegal.): 
    20:  = f.text_field :owner, placeholder: "Example Owner", class: "xxlarge" 
    21: 
    22: @users.each_value do |value| 
    23:  = f.fields_for :memberships do |ff| 
    24:   = ff.check_box :user_id 

我退出e新的轨道,我不明白我要去哪里错

回答

1

您是否想要在@users.each_value之前放置一个-来评估代码?

+0

对不起,我弄错了,当我复制粘贴我的职务 – Newben

+1

@Newben我不认为你做呢,给出的误差在相同的“错误”它。 – sevenseacat

0

其实,我通过@users.each取代@users.each_value和它的工作只是罚款