LoginSignup
0
0

More than 1 year has passed since last update.

railsチュートリアル第4章 CSS

Posted at

CSS、再び

<%= stylesheet_link_tag 'application', media: 'all',
                                       'data-turbolinks-track': 'reload' %>

Railsではスタイルシートを追加するための特別なメソッドを使っています。

stylesheet_link_tag 'application', media: 'all',
                                   'data-turbolinks-track': 'reload'

このメソッドを呼んでいます
第一に、丸カッコがありません。
Ruby では丸カッコは使用してもしなくてもいい。

次の2つの行は等価です。

# メソッド呼び出しの丸カッコは省略可能。
stylesheet_link_tag('application', media: 'all',
                                   'data-turbolinks-track': 'reload')
# 上は以下のように書いても同じ
stylesheet_link_tag 'application', media: 'all',
                                   'data-turbolinks-track': 'reload'

media引数はハッシュのようだ。  
ハッシュがメソッド呼び出しの最後の引数の場合は、波カッコを省略できる。

次の2つの行は等価です

# 最後の引数がハッシュの場合、波カッコは省略可能。
stylesheet_link_tag 'application', { media: 'all',
                                     'data-turbolinks-track': 'reload' }
# 上は以下のように書いても同じ
stylesheet_link_tag 'application', media: 'all',
                                   'data-turbolinks-track': 'reload'

これでなぜ動いているのか?

stylesheet_link_tag 'application', media: 'all',
                                   'data-turbolinks-track': 'reload'

上のコードには途中に改行が含まれている。
Rubyは改行と空白を区別していません。
行を分割した理由は、1行を80字以内に収めてソースコードを読みやすくするためです。

最初のコード
stylesheet_link_tag 'application', media: 'all',
                                   'data-turbolinks-track': 'reload'

stylesheet_link_tagメソッドを2つの引数で呼んでいます。
最初の引数である文字列は、スタイルシートへのパスを示しています。
次の引数であるハッシュには2つの要素がある。
最初の要素はメディアタイプを示し、
次の要素はRails 4.0で追加されたturbolinksという機能をオンを示す。

<%= ... %> で囲まれているコードを実行した結果がERbのテンプレートに挿入されるようになります。
ブラウザ上でこのページのソースを表示すると、必要なスタイルシートが含まれていることを確認できます

読み込まれたCSSによって生成されたHTMLソース
<link rel="stylesheet" media="all" href="/assets/application.self-
f0d704deea029cf000697e2c0181ec173a1b474645466ed843eb5ee7bb215794.css?body=1"
data-turbolinks-track="reload" />
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0