Rails 4 で、コントローラーの URL からパラメーターを取得するのに問題があります。
has_many と belongs_to の関連付けを持つ 2 つのモデルがあります。これらを Books と Pages と呼びましょう。新しい Page レコードを作成し、ユーザーが [作成] ボタンをクリックしたときにアクセスしていた本に応じて Book モデルにリンクさせたい (つまり、ユーザーがジュラシック パークの本のページにいて [作成] をクリックした場合) " ジュラシック パークの本に関連する新しいページを作成したい)。
これが私の見解からの作成リンクです:
<%= link_to "Create page", new_page_path(:book => @book.id), :id => "submit-button" %>
これが私のコントローラーです:
def new
@page = Page.new
end
def create
@book = Book.find(params[:book])
@page = Product.new(page_params)
@page.book_id = @book.id
if @page.save
flash[:success] = "Page Submitted!"
redirect_to @book
else
render 'new'
end
end
次のエラーが表示されます。
「ActiveRecord::RecordNotFound in PagesController#create - ID のない本が見つかりませんでした」
私はこれを完全に間違っていますか?Rails 4 では、URL パラメーターを取得するのと同じ構文である params の動作方法が変更されたことを知っているため、おそらくそれがこの問題の原因です。
編集:「new」からパラメーターを変数として取得し、それを ID として使用しようとしましたが、同じエラー メッセージが表示されます。