Загрузка различных CSS в макет приложения в зависимости от типа страницы (Ruby on Rails) - PullRequest
1 голос
/ 20 мая 2010

В моем приложении есть страницы двух основных типов: формы и таблицы.

Таким образом, у меня есть два разных CSS-файла, forms.css и tables.css.

В моем файле макета приложения (application.html.erb) я хотел бы загрузить различные таблицы стилей в зависимости от какого-либо типа флага, установленного в данном представлении.

Например, <%= defined?(@tables) : stylesheet_link_tag 'tables' ? stylesheet_link_tag 'forms' %>.

Приведенный выше фрагмент на самом деле не работает, но это то, что я пытаюсь сделать?

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 20 мая 2010

Я только что попробовал похожую вещь, и она работает для меня. Ваш код не совсем правильный, возможно, вам просто нужно изменить его на

<%= stylesheet_link_tag(defined?(@tables) ? 'tables' : 'forms') %>
2 голосов
/ 20 мая 2010

Вы должны переместить это в before_filter в вашем контроллере. Сохраняйте вид легким.

По виду:

<%=stylesheet_link_tag @foo %>

before_filter в контроллере:

before_filter :get_css_file

def get_css_file
  @foo = defined?(@tables) ? 'tables' : 'forms'
end

Полагаю, вы установили @tables в своем контроллере, поэтому вам, возможно, придется скорректировать свою логику, но вы поняли идею. Фактически, вы уже знаете, является ли это контроллером таблицы или страницы формы, возможно, поэтому вы просто устанавливаете @foo напрямую: @foo = 'tables' и т. Д.

1 голос
/ 20 мая 2010

Ваш синтаксис троичного оператора неверен, если вы пытаетесь это сделать. Я думаю, что вы имеете в виду это:

<%= defined?(@tables) ? stylesheet_link_tag 'tables' : stylesheet_link_tag 'forms' %>

Знак вопроса (?) И двоеточие (:) поменялись местами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...