[英]Load different CSS in application layout based on page type (Ruby on Rails)
我的應用程序具有兩種基本類型的頁面:表單和表格。
因此,我有兩個不同的CSS文件,即form.css和table.css。
在我的應用程序布局文件(application.html.erb)中,我想根據給定視圖中設置的某種標記來加載不同的樣式表。
例如, <%= defined?(@tables) : stylesheet_link_tag 'tables' ? stylesheet_link_tag 'forms' %>
<%= defined?(@tables) : stylesheet_link_tag 'tables' ? stylesheet_link_tag 'forms' %>
。
上面的代碼片段實際上不起作用,但這就是我要完成的工作?
有任何想法嗎?
您應該將其移至控制器中的before_filter。 保持視圖輕巧。
在視圖中:
<%=stylesheet_link_tag @foo %>
Controller中的before_filter:
before_filter :get_css_file
def get_css_file
@foo = defined?(@tables) ? 'tables' : 'forms'
end
我假設您在控制器中設置了@tables,因此您可能必須調整邏輯,但是您明白了。 實際上,您可能已經知道它是表控制器還是表單頁面控制器,因此您基本上只需要直接設置@foo
: @foo = 'tables'
等。
我剛剛嘗試了類似的操作,它對我有用。 您的代碼不太正確,也許您只需要將其更改為
<%= stylesheet_link_tag(defined?(@tables) ? 'tables' : 'forms') %>
如果這是您要嘗試的操作,那么您的三元運算符語法是錯誤的。 我想你的意思是:
<%= defined?(@tables) ? stylesheet_link_tag 'tables' : stylesheet_link_tag 'forms' %>
問號(?)和冒號(:)更改了位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.