簡體   English   中英

根據頁面類型在應用程序布局中加載不同的CSS(Ruby on Rails)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM