link_toでパラメータを渡す
link_toでパラメータを渡す方法はそんなに難しくない。だが、ちょっとした工夫が必要な場合もあるみたい。まずは単純にパラメータを渡す。
<%= link_to "Review", new_hoge_path, fuga_id: fuga.id %>
上記は例えばhogeというコントローラーのnewアクションにfuga_idというパラメータを渡したい場合。fuga_idはもちろんfuga.idでFugaというモデルはあるものとする。
問題はhogeではfuga.idだけでなくFugaモデルからfuga.idに紐づくレコードそのものを取得したい場合。fuga.created_atやfuga.updated_at、その他色々使いたいのだ!という場合がこのままでは対応出来ない。
そこでhoges_controller.rbで
def new
@fuga = Fuga.find_by_id(:fuga_id)
end
としてみたが@fugaは実態が無い状態となってしまった。このままだとview側で@fuga.craeted_at と呼び出しても@fugaそのものがnilなためエラーとなる。
※というかなった。www
そこで以下の方法を用いた。
def new
@fuga_id = params[:fuga_id]
@fuga = Fuga.find_by_id(@fuga_id)
end
これでOK!!あとは@fuga.created_atなり何なり使えましたとさ。