0

好的,所以在安装strong_params之前, usingMyBook.create!可以工作,但现在不行。

这是我的代码

class AuthorsController < ApplicationController
  def new
    @author = user.authors.build
  end

  def create
    @author = Author.new(author_params)
    if @author.save
      @book = MyBook.create!(:author_id => @author.id,
          :user_id => @author.user_id)
        )
   else
     render :new
  end
end

我试过

@book = MyBook.create!(params.require(:my_book).permit(
          :author_id => @author.id,
              :user_id => @author.user_id)
        )

但我越来越Required parameter missing: my_book

我究竟做错了什么?我可以一个一个地更新每个属性,但这似乎效率不高。我知道我无法批量分配受保护的属性,但不必在我的模型中分配属性(因为 strong_params),我不明白如何让它工作。

先感谢您

4

1 回答 1

1

所以在此之前,您并没有真正使用参数

@book = MyBook.create!(:author_id => @author.id,
      :user_id => @author.user_id)
    )

如果您以“质量分配”方式使用参数,它看起来像:

@book = MyBook.create!(params[:book])

由于您自己提取了 id,因此更容易做到:

@book = MyBook.create! do |mybook|
  mybook.author_id = @author.id
  mybook.user_id =  @author.user_id
end
于 2013-08-08T15:45:52.603 回答