2010-05-19 42 views
1

我的應用程序有兩種基本類型的頁面:表格和表格。根據頁面類型(Ruby on Rails)加載不同的CSS在應用程序佈局中

因此,我有兩個不同的CSS文件forms.css和tables.css。

在我的應用程序佈局文件(application.html.erb)中,我想根據給定視圖中設置的某種標誌加載不同的樣式表。例如<%= defined?(@tables) : stylesheet_link_tag 'tables' ? stylesheet_link_tag 'forms' %>

上面的代碼片段實際上並沒有工作,但這就是我想要完成的?

任何想法?

回答

2

您應該將其移至控制器中的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'

+0

怎麼一個人去做這件事? – peehskcalba 2010-05-19 21:33:41

+0

編輯我的答案。 – ghoppe 2010-05-19 21:35:11

1

你的三元運算符語法是錯誤的,如果這就是你想要做的。我認爲你的意思是:

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

問號(?)和冒號(:)改變了地方。

2

我剛剛嘗試過類似的東西,它適用於我。您的代碼不太正確,也許您只需將其更改爲

<%= stylesheet_link_tag(defined?(@tables) ? 'tables' : 'forms') %> 
相關問題