0

わかりましたので、 strong_paramsをインストールする前は、使用MyBook.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

私は何を間違っていますか?各属性を 1 つずつ更新できますが、効率的ではないようです。保護された属性を一括割り当てできないことは理解していますが、モデルに属性を割り当てる必要がないため (strong_params のため)、これを機能させる方法がわかりません。

前もって感謝します

4

1 に答える 1

1

そのため、以前は本当にparamsを使用していませんでした

@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 に答える