根据页面类型在Ruby应用程序布局中加载不同的CSS(Ruby on Rails)

时间:2010-05-19 21:10:26

标签: ruby-on-rails css

我的应用程序有两种基本类型的页面:表单和表格。

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

在我的应用程序布局文件(application.html.erb)中,我想根据给定视图中设置的某种标志加载不同的样式表。

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

上面的代码段实际上并不起作用,但这就是我想要完成的事情?

有什么想法吗?

3 个答案:

答案 0 :(得分: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'等。

答案 1 :(得分:2)

我刚尝试过类似的东西,它对我有用。您的代码不太正确,也许您只需要将其更改为

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

答案 2 :(得分:1)

您的三元运算符语法错误,如果您正在尝试这样做。我想你的意思是:

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

问号(?)和冒号(:)改变了地方。