class ArticlesController < ApplicationController
def show
article = Article.find(params[:id])
end
end
これでは表示されない、、、
Railsではコントローラで設定された「インスタンス変数」がビューに渡される仕組みになっている。
コードのarticleは通常のローカル変数であるためビューで使うことができない。そのため、articleを@articleに変更すればよい。
4行目のArticle.find(params[:id])という記述のうち、params[:id]には詳細表示されたいレコードのidが格納されます。なぜそのような動作になるのか、「rails routes」という言葉を使って説明してください。
rails routesを使ってアプリケーションのルーティングを確認すると、通常showアクションには以下のような設定がされている。
1 Prefix Verb URI Pattern Controller#Action
2 tweet GET /tweets/:id(.:format) tweets#show
そのため、例えば「localhost:3000/tweets/3」というURLが指定されると、paramsの「:id」というキーのバリューとして「3」が代入される。
そのため、そのあと呼び出されたコントローラー内でparams[:id]と取り出すことができる。