我有一个小示例应用程序,有3个模型:成员,组和订阅。这个想法是,成员可以订阅组。嵌套窗体和has_many:通过
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被创建为nil。但正如你所看到的,我从@member
变量创建组,所以我认为它应该被初始化,但它不是。
任何人都可以给我看光?
你可以看到这里的示例应用程序:https://github.com/idavemm/nested_form
是的,它们都可以访问。你可以在我发布的问题模型中看到它们。 –
您是否在创建操作中遇到错误?它是否可以从控制台上运行? –
是的,错误在创建操作中。在这里,你有我正在试图做到这一点:https://github.com/idavemm/nested_form/blob/master/app/controllers/groups_controller.rb –