Railsに推測してもらうのが気持ち悪かったので、体系的に学んだ
書籍「現場で使えるRuby on Rails 5 速習実践ガイド」
Chapter3 タスク管理アプリケーションを作ろう
3-3-3詳細表示機能を実装する
112ページより
-@tasks.each do |task|
tr
td= link_to task.name, task
td= link_to task.created_at, task
についてのlink_toの説明で、URLは"task"というオブジェクトからRailsが推測して作ってくれます。という説明が少し気持ち悪かったので、推測ではない、任意のものを指定する方法を備忘録として記載した。
taskはブロック変数である|task|のこと
@tasksはコントローラであるTasksControllerクラスのメソッドindexより@tasks = Task.all のオブジェクトを代入されたインスタンス変数のことである。
記法はslim。
そもそもIink_toメソッドは
<%= link_to 'Yahooへ移動する', "http://www.yahoo.co.jp/"=%>
のようにリンクを書くので、上のような書き方にするには
td= link_to task.name, "/tasks/#{task.id}"
td= link_to task.name, "/tasks/#{task.id}"
とすればいい。
ちなみに、task(@tasks)には : id ,:name ,:description ,:created_at,:updated_atがハッシュとして格納されている。
ただ、これだと書き方が冗長になり、変更の際に書き直しがめんどくなるということで、URLヘルパーメソッドを利用する。参考にしたサイトはこちら
ターミナルでrails routesと打てばパスとヘルパーメソッドの関係が確認できるので、使用する際は参照する。
パスは/task/:id 対応するヘルパーメソッドはtask_path(:id)なので、
td= link_to task.name, task_path(task.id)
td= link_to task.created_at, task_path(task.id)
と打てばOK。
ちなみに余談ですが、先ほど紹介した記事でもヘルパーメソッドの中で
と書かれていたので、気持ち悪いけど慣れて使っていこうと思う。
この記事が気に入ったらサポートをしてみませんか?