我那里有3种型号有点示例应用程序:会员组和订阅。 这个想法是,会员可以订阅到组。
class Member < ActiveRecord::Base
has_many :subscriptions, dependent: :delete_all
has_many :groups, through: :subscriptions
attr_accessible :email
validates :email, presence: true
end
class Group < ActiveRecord::Base
has_many :subscriptions, dependent: :delete_all
has_many :members, through: :subscriptions
accepts_nested_attributes_for :subscriptions
attr_accessible :name, :subscriptions_attributes
validates :name, presence: true, uniqueness: true
end
class Subscription < ActiveRecord::Base
belongs_to :group
belongs_to :member
attr_accessible :group_id, :introduction
validates :group_id, presence: true
validates :introduction, presence: true
end
我试图创建新组形式,并嵌套在introduction
内属性。
我的控制器方法:
def new
@group = Group.new
@group.subscriptions.build
end
def create
@member = Member.first
@group = @member.groups.build(params[:group])
if @group.save
flash[:success] = "Saved"
redirect_to group_path(@group)
else
render :new
end
end
但是,这是行不通的。 它引发错误group_id can't be blank
。 所以,我不知道如何将新组分配给订阅。
此外,member_id被创建为无。 但正如你所看到的,我创建从组@member
变量,所以我认为它应该被初始化,但它没有。
任何人都可以告诉我的光?
:你可以在这里看到示例应用程序https://github.com/idavemm/nested_form