批量分配,嵌套表单和当前用户作为作者



我有几个对象,foo,bar和user。

我有一个用于创建新的 foo 对象的表单,它使用 simple_fields_for 和 accepts_nested_attributes_for 同时创建新的子 bar 对象。

现在,我想将current_user设置为新柱的 author 属性,但我不知道如何最好地做到这一点。(对 Rails 来说仍然是新的。

我已经在foo控制器内的创建方法中尝试了以下内容:

def create
    @foo = Foo.build(params[:foo])
    @foo.bars.find(:first).author = current_user

但是,当我运行它时,我得到一个异常。

undefined method `author=' for nil:NilClass

任何人都可以就如何最好地做到这一点提供任何建议吗?

您可能需要在@foo下构建Bar对象。

def new
  @foo = Foo.new
  @foo.bars.build
end
def create
   @foo = Foo.new(params[:foo])
   @foo.bars.first.author = current_user
   if @foo.save 
     redirect_to @foo
   else
     render action: "new"
   end
end

嵌套表单的良好资源:http://railscasts.com/episodes/196-nested-model-form-part-1?view=asciicast

如果您在模型中设置了accepts_nested_attributes_for并在表单中正确使用了fields_for,则params[:foo]将包含一个名为 bar_attributes 的元素,该元素将包含在表单上输入的有关条形图对象的数据。浏览我链接到的铁路广播以获取更多信息。

相关内容

  • 没有找到相关文章

最新更新