ピスタチオを食べながらrailsを楽しむ

ピスタチオ大好きな著者のrailsを使ったツール作成の日記です。

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なり何なり使えましたとさ。