showアクションで記事表示機能を作る
前回はindexアクションでRESTfulな記事一覧機能を実装しましたが、今回はshowアクションで各記事の表示を行います。
連載: Rails4でRESTfulアプリケーションの7アクション+αを作る
記事表示機能のルーティング設定
まずはroutes.rbでルーティング設定を行います。
記事表示にはshowアクションを使うので
# config/routes.rb
namespace :blog do
resources :posts, only: [:show]
end
と設定します。
設定してからルーティングを確認すると
$ rake routes
blog_post GET /blog/posts/:id(.:format) blog/posts#show
という行が出力されます。
読み方はindexアクションの時と同じで
- Prefixは
blog_post
で、blog_post_path(blog_post.id)
といったヘルパーでパスを取得できる /blog/posts/:id(.:format)
へのGET
リクエストでアクセスできるblog_posts
コントローラのshow
アクションを実行する
ということがわかります。
記事表示機能のコントローラ
コントローラではshowアクションを実装します。
showアクションでは表示用の記事データを取得する必要があるので
# app/controllers/blog/posts_controller.rb
before_action :set_blog_post, only: [:show]
def show
end
private
def set_blog_post
@post = Blog::Post.find(params[:id])
end
というようにデータを取得します。
なお、idからの記事データの取得は他のアクションでも行う操作なのでbefore_actionで行うようにしています。
記事表示機能のビュー
showアクションのビューでは取得済みの記事データを表示します。
記事の内容を表示するのであれば
/ app/views/blog/posts/show.html.slim
h1 = @post.title
p = @post.content
と書くことができます。
ここまでで記事閲覧機能は完成しました。
次はnewアクションでの記事入力フォーム表示を行います。