####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" />