0

次のコードの一部について説明を探しています。背景を説明するために、レシピをアップロードしたり、レシピを検索したり、お気に入りとして保存したりできるアプリがあります。このコードはコントローラーの「レシピ」にあります。 "、アクションは" my_recipes "

<%= link_to "Add to favorites",  {:controller => 'favourites', :action => 'create', :recipe_id => recipe.id}, {:method => :post } %>

私の理解では、これにより、お気に入りコントローラー内のcreateメソッドを介してPOSTリクエストを行うlink_to(必要に応じてアンカータグ)が作成されます。私が理解していると思うこの部分(訂正を歓迎します)、私が確信していない部分は

:recipe_id => recipe.id}

たとえば、これがrecipe_idを渡していることは知っていますが、なぜこれを行うのか知りたいですか?そして:、最初のrecipe_idの前の関連性。一部の人には明らかなように見えるかもしれませんが、学ぶまでわかりません。

助けていただければ幸いです

4

1 に答える 1

1

このコードは部分的なものですか? recipe引き継がれている?次のように書き換える必要があります。

link_to "Add to favorites",  new_favourite_path(recipe), method: :post

rake routesコンソールで実行し、お気に入りを作成するためのパスを見つけてから、「new_favourite」を上記のものに置き換えます。ルートは、 などのより明示的なもので識別される場合があることに注意してくださいnew_favourite_recipe

質問に答えるには、 を渡す必要がありますreciperecipe.idそうしないと、コントローラがどのレシピをお気に入りに追加するかがわからないためです。のようなものを使用してコントローラーアクション内から直接アクセスする必要があるため、ユーザーを指定する必要はありませんcurrent_user

于 2012-11-07T18:05:49.787 に答える