例のごとくドットインストールのRails5の動画を元に学んでいきます!
本日は10章からの部分です。
前回記事はこちら taxa-program.hatenablog.com
画面のカスタマイズ
アプリ全体のレイアウトの設定を行っているのが、下記ファイル
myblog/app/views/layouts/mailer.html.erb
<!DOCTYPE html> <html> <head> <title>Myblog</title> <%= csrf_meta_tags %> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> </head> <body> <div class="container"> <!-- ビューで記述したコードはこのyieldで読み込まれる --> <%= yield %> </div> </body> </html>
今回は全体をcontainerクラスで囲って、中央揃えにしてみます。
次にcssに手を加えます。
下記ファイルにアプリケーション全体のスタイルシートが記述されています。
ここに追記していきます。
myblog/app/assets/stylesheets/application.css
.container { width: 400px; margin: 20px auto; } body { font-family: Verdana, sans-serif; font-size: 14px; } h2 { font-size: 16px; padding-bottom: 10px; margin-bottom: 15px; border-bottom: 1px solid #ddd; } ul > li { margin-bottom: 5px; }
すると、見栄えが反映されたと思います。
詳細画面へのリンクの作成
ここでは記事タイトルをクリックしたときに、
記事詳細画面に遷移できるようにリンクの設定を行います。
改めてルーティングの確認をしてみると
Prefix Verb URI Pattern Controller#Action posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new edit_post GET /posts/:id/edit(.:format) posts#edit post GET /posts/:id(.:format) posts#show PATCH /posts/:id(.:format) posts#update PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroy root GET / posts#index
6行目のpostsにidを付けてGETでアクセスするURLがよく使用されるため、
今回はここに定義されているshowアクションを使用していきます。
まずはリンクの作成を行います。
myblog/app/views/posts/index.html.erb
<h2>My Posts</h2> <ul> <!-- rubyの命令を埋め込む場合は<% %>で括る --> <!-- <%= %>は中に記入したrubyの式を評価して表示してくれる --> <!-- Actionで指定したインスタンス変数を使用することができる --> <% @posts.each do |post| %> <li> <!-- リンクの作成 link_to 'リンクの名前', 'リンクのURL' --> <%= link_to post.title, post_path(post) %> <!-- <%= post.title %> --> </li> <% end %> </ul>
次にshowアクションを作成していきます。
showアクションの作成
下記コントローラファイルにアクションを追加します。
myblog/app/controllers/posts_controller.rb
def show #post変数に各Postの値を設定 :idを引数にすることにより、特定のデータが取得できる @post = Post.find(params[:id]) end
次はshowアクションに対応するビューを作成します。
showのビュー作成
下記ファイルを作成します。
myblog/app/views/posts/show.html.erb
<h2><%= @post.title %></h2> <p><%= @post.body %></p>
ここでブラウザから再読み込みすると、各Postの詳細画面へ遷移できるようになっていると思います。
しかし、このままではTOP画面に戻るボタンがないため、画像にリンクを貼り、その画像をクリックすることによりTOP画面に戻れるような処理の実装を行いたいと思います。
画像にリンクを貼る
リンクを付けたい画像ファイルを用意し、下記フォルダに配置してください。
myblog/app/assets/images/logo.png
今回はアプリ全体に同じ画像を表示させつつリンクも設定するため、下記ファイルのコンテナクラス内に手を加えます。
myblog/app/views/layouts/application.html.erb
<!-- 画像にlogoクラスを設定し、cssでサイズ等を変更できるようにする --> <h1><%= link_to image_tag('logo.png', class: 'logo'), root_path %></h1>
同じようにcssにもlogoクラスの属性を記述します。
.logo { width: 400px; height: 180px; }
これでいい感じになりました。
次回は記事を追加できるようにしていきます。