4.3.4 Вновь CSS
Пришло время, снова посетить строки из Листинга 4.4 используемые в макете для включения каскадных таблиц стилей:
<%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %> <%= stylesheet_link_tag 'blueprint/print', :media => 'print' %>
В настоящее время мы почти в состоянии понять это. Как уже упоминалось вкратце в Разделе 4.1.2, Rails определяет специальную функцию для включения таблиц стилей, и
stylesheet_link_tag 'blueprint/screen', :media => 'screen'
это вызов этой функции. Но Есть две тайны. Во-первых, где скобки? В Ruby, они не являются обязательными; эти две строки эквивалентны:
# скобки необязательны для вызова функции. stylesheet_link_tag('blueprint/screen', :media => 'screen') stylesheet_link_tag 'blueprint/screen', :media => 'screen'
Во-вторых, :media
аргумент уверенно выглядит как хэш, но где фигурные скобки? Когда хэш — последний аргумент в вызове функции, фигурные скобки не являются обязательными; эти две строки эквивалентны:
# фигурные скобки для последнего хэш аргумента не обязательны stylesheet_link_tag 'blueprint/screen', { :media => 'screen' } stylesheet_link_tag 'blueprint/screen', :media => 'screen'
Таким образом, мы видим теперь, что каждая из строк
<%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %> <%= stylesheet_link_tag 'blueprint/print', :media => 'print' %>
вызывает stylesheet_link_tag
функцию с двумя аргументами: строкой, указывающей путь к таблице стилей, и хэшем, с указанием типа носителя ( ’screen’
для экрана компьютера и ’print’
для печатной версии). Из-за <%= %> скобок, результаты вставляются в шаблон ERb-ой, и если вы посмотрите исходный код страницы в браузере, вы должны увидеть HTML, необходимый для включении таблиц стилей (Листинг 4.6).14
<link href="/stylesheets/blueprint/screen.css" media="screen" rel="stylesheet" type="text/css" /> <link href="/stylesheets/blueprint/print.css" media="print" rel="stylesheet" type="text/css" />