ここでは今まで作ってきたアプリの見た目の部分を作成する。
- レイアウトファイルの使い方
- CSSファイルの適用の仕方
レイアウトを変更する
ここまで作成してきたビューにはまだ装飾がされていない。
このビューにHTML、CSSファイルを適用して見本のPictweetのような見た目にしていく。
ヘッダー部分を完成させる
まず、Pictweetのヘッダー部分を完成させる。
今までビューに関わる内容は、index.html.erbというファイルに記述してきた。
しかし、ヘッダーやフッターなど、同じ内容を固定で表示したいときはレイアウトテンプレートを使用する。
レイアウトテンプレートとは
多くのページで同じ内容を表示したいとき、同じコードを何回も書くのは効率的ではない。
そのため、Railsにはレイアウトテンプレートが用意されている。
どのビューを表示するときも、必ずレイアウトテンプレートが表示され、その中に個別のページが埋め込まれる。
一般的には、ヘッダーやフッターの内容を記述するために用いられる。
また、レイアウトテンプレートは複数用意しておくことができる。
特に指定をしなかった場合は、app/views/layoutsフォルダにある「application.html.erb」がテンプレートとして使用される。
application.html.erbを下記の内容に書き換える
コードの量が多いので、間違えないようコピー&ペーストで書き換える。
<!DOCTYPE html> <html> <head> <title>Pictweet</title> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> <script type="text/javascript"> WebFontConfig = { google: { families: [ 'Unica+One::latin' ] } }; (function() { var wf = document.createElement('script'); wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js'; wf.type = 'text/javascript'; wf.async = 'true'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wf, s); })(); </script> </head> <body> <header class="header"> <div class="header__bar row"> <h1 class="grid-6"><a href="/">PicTweet</a></h1> <div class="user_nav grid-6"> <a class="post" href="/tweets/new">投稿する</a> </div> </div> </header> <%= yield %> <footer> <p> Copyright PicTweet 2019. </p> </footer> </body> </html>
改行を適応させる
デフォルトの状態ではrailsは文字列の改行を読み込まず、改行した状態で文章を表示させることはできない。
改行がしっかりと適応されるようにするためにはsimple_formatというメソッドを使う必要がある。
simple_format
simple_formatメソッドは下記の条件で文字列を加工してくれるメソッドである。
今回はこのメソッドを使って改行を反映したツイートをビューに表示にさせる。
①改行は<br/>
を付与
②文字列を<p>
で括る
【例】
app/views/test/sample.html.erb
1 |
<%= simple_format(引数) %>
|
index.html.erbを以下のように編集する
1 2 3 4 5 6 7 8 |
ヘルパーメソッド
simple_format
のように、Railsでは主にviewでHTMLタグを出現させたりテキストを加工するために予めメソッドが用意されている。これらをまとめて、ヘルパーメソッドという。
他には、
form_tag
(フォームを出現させるメソッド)やlink_to
(aタグを出現させるメソッド)などがある。CSSファイルを適用する
stylesheet_link_tag
CSSファイルの読込みはHTMLのヘッダー部分のstylesheet_link_tag
から読み込まれる。
Railsの場合レイアウトファイルがあるので、application.html.erb
にヘッダーの記述がある。application.html.erb
の3行目に注目する。
1 2 3 4 5 6 |
<head>
<title>Pictweet</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
</head>
|
cssファイルはapp/assets/stylesheets/
というディレクトリに配置する。
application.html.erbのstylesheet_link_tag
の部分にapplication
と書いてあるので、このHTMLからはapp/assets/stylesheets/application.cssというCSSファイルを読み込むことを示している。
require_tree
application.css
の13行目に注目する。
- app
- assets
- stylesheets
- application.css
- stylesheets
- assets
app/assets/stylesheets/application.css
/* ## 中略 ## * *= require_tree . *= require_self */
application.cssには、どのcssを読み込むかという設定が書いてある。
require_treeには引数として与えられたディレクトリ以下のcssファイルをアルファベット順に全て読み込むという意味がある。
現在require_treeの引数には.(ドット)が渡されている。
引数.(ドット)はカレントディレクトリを表す。
つまり、この記述によってapp/assets/stylesheetsというディレクトリにあるcssファイルは全て読み込まれることになる。
リンク先のファイルをダウンロードして「style.scss」と「setting.css」を下記のディレクトリに配置する
style.scss
setting.css
※ファイルを追加する際には既に存在するファイルは削除しない
- app
- assets
- stylesheets
- style.scss
- setting.css
- stylesheets
- assets
scssという拡張子はcssファイルの一種ですので、今は気にせずに追加する。
フォントファイルを適用しましょう
レイアウトを編集する際に、CSSやHTMLの編集に加えて文字のフォントの編集も可能である。
Railsでフォントを変更する際にはフォントファイルというものを追加する。
フォントファイル
フォントファイルとは、文字のフォントを変更するためのファイルである。
このファイルには、フォントの情報が記載してある。
Railsでフォントを読み込むためにはapp/assets/fonts
というディレクトリにフォントファイルを配置し、CSSファイルにフォントファイルの読み込みを記述する必要がある。
【例】
- app
- assets
- fonts
- フォントファイル
- fonts
- assets
追加したフォントを使用する際には、CSSファイルにフォントファイルの指定を行なう。
app/assets/stylesheets/style.scssの11行目に注目する。font_1_honokamin.ttfという記述があり、これがフォントファイルの指定を行なっている。
app/assets/stylesheets/style.scss
@font-face { font-family: 'ほのか明朝'; src: url('font_1_honokamin.ttf') format('truetype'); font-weight: normal; font-style: normal; }
「fonts」というディレクトリを以下のディレクトリに作成する
app-assets-fonts
リンク先のファイルをダウンロードして「font_1_honokamin.ttf」を下記のディレクトリに配置する
font_1_honokamin.ttf
- app
- assets
- fonts
- font_1_honokamin.ttf
- fonts
- assets
レイアウトの変更を確認する
以上の作業で、HTMLの編集、CSSの編集、フォントファイルの適用が終了した。
これから、実際に編集が適用されているかを確認する。
imageカラムに画像のURLを保存する
サンプル画像
上のリンク先から画像のURLをコピーする。
imageカラムに画像のURLをペーストする
phpMyAdminのtweetsテーブルを開き、「表示」をクリックする。
最初のレコードの「編集」をクリックしてimageカラムの「値」の枠にコピーした画像のURLをペーストし、「実行」を押す。
indexページを表示させる。
indexページを表示させ、以下の画面のようになっていることを確認する。