今回は見た目の部分を作っていきます
途中の方はこちらから進めてください
Railsで簡単にブログを作る(初心者向け)
1.管理画面を作る
2.post model と post_image model を作る
3.管理画面で作業できるようにする
4.viewについては別の記事でまとめていきます
Bootstrapの導入
それでは初めていきます
まずはルートに root ‘posts#index’を追加します
Rails.application.routes.draw do root 'posts#index' resources :posts devise_for :admin_users, ActiveAdmin::Devise.config ActiveAdmin.routes(self) end
localhost:4000 にアクセスすると以下の画像のような画面になると思います
このままだと見た目があんまり良くないので、bootstrapを導入して見ましょう
gem 'bootstrap-sass'
次はbundle installします
$ bundle install
次は assets/stylesheets/application.css を application.css.scss に名前を変更して、中身を少し修正します
@import "bootstrap-sprockets"; @import "bootstrap"; /* * This is a manifest file that'll be compiled into application.css, which will include all the files * listed below. * * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. * * You're free to add application-wide styles to this file and they'll appear at the bottom of the * compiled file so the styles you add here take precedence over styles defined in any styles * defined in the other CSS/SCSS files in this directory. It is generally better to create a new * file per style scope. * *= require_tree . *= require_self */
assets/javascripts/application.jsも編集します
//= require jquery //= require jquery_ujs //= require turbolinks //= require_tree . //= require jquery //= require bootstrap-sprockets
これでbootstrapが使えるようになりました!
サーバーを再起動して確認してみます
無事に導入できていたらこんな画面になっていると思います
メニューバーの作成
次はメニューバーに以下の項目を加えていきます
- プロフィール
- ブログ
- お問い合わせ
まずはメニューバーを作ります
<!--ここから--> <nav class="navbar navbar-default"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gnavi"> <span class="sr-only">メニュー</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div id="gnavi" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="">Link1</a></li> <li><a href="">Link2</a></li> <li><a href="">Link3</a></li> </ul> </div> </nav> <!--ここまでが追加分です!--> <p id="notice"><%= notice %></p> <h1>Listing Posts</h1> <table> <thead> <tr> <th>Title</th> <th>Brief</th> <th>Body</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @posts.each do |post| %> <tr> <td><%= post.title %></td> <td><%= post.brief %></td> <td><%= post.body %></td> <td><%= link_to 'Show', post %></td> <td><%= link_to 'Edit', edit_post_path(post) %></td> <td><%= link_to 'Destroy', post, method: :delete, data: {confirm: 'Are you sure?'} %></td> </tr> <% end %> </tbody> </table> <br> <%= link_to 'New Post', new_post_path %>
localhost:3000で確認するとこんな画面になっています
画面を狭くしてみてください
bootstrapを使えばスマホ対応も簡単です
日本語だとちょっとかっこ悪いので、英語でメニューバーを書きましょう
<!--ここから--> <nav class="navbar navbar-default"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gnavi"> <span class="sr-only">メニュー</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div id="gnavi" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="">Profile</a></li> <li><a href="">Blog</a></li> <li><a href="">Contacts</a></li> </ul> </div> </nav> <!--ここまでが追加分です!-->
次はブログの一覧を出力できるようにしていきます
<!--ここから--> <nav class="navbar navbar-default"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#gnavi"> <span class="sr-only">メニュー</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div id="gnavi" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="">Profile</a></li> <li><a href="">Blog</a></li> <li><a href="">Contacts</a></li> </ul> </div> </nav> <!--ここまでが追加分です!--> <!-- コンテンツの内容 --> <div class="container-fluid"> <div class="container"> <h1>Blog</h1> <div class="row"> <% @posts.each do |post| %> <div class="col-md-4"> <%= image_tag(post.post_images[0].image.thumb, {:style => 'width:100%; height:45;'}) %> <h2><%= post.title %></h2> <p><%= post.brief %></p> <p><%= link_to 'Show', post %></p> </div> <% end %> </div> </div> </div> <!--ここまで-->
htmlページの編集
Post modelの body ですが、こちらは show ページで出力するようにします
こちらがshowページのコードです
<div class="container-fluid"> <div class="container"> <%= image_tag(@post.post_images[0].image) %> <h2><%= @post.title %></h2> <h3><%= @post.brief %></h3> <p><%= @post.body.html_safe %></p> <%= link_to 'Back', posts_path %> </div> </div>
記事を書く際にWordpressみたいなマークダウンを入れてもいいのですが、ちょっとめんどくさいので、
body には html で書いていってください
ちなみに、 @post.body の後に html_safe メソッドなしだとうまく表示されないので、気をつけてください
こんな感じで、タグが効いてます
ひとまずはこれで完成です!
cssに関してはほとんど触れていないので、見た目はアレですが、機能面に関しては十分だと思います
次回はプロフィール画面の作り方かコンタクトフォームあたりをやろうかと思います
コメントを残す