【问题标题】:Load different CSS in application layout based on page type (Ruby on Rails)根据页面类型在应用程序布局中加载不同的 CSS (Ruby on Rails)
【发布时间】:2010-05-19 21:10:26
【问题描述】:

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

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

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

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

上面的 sn-p 实际上并没有工作,但这就是我想要完成的?

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails css


    【解决方案1】:

    您应该将其移至控制器中的 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' 等。

    【讨论】:

    • 这是怎么做到的?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你的三元运算符语法是错误的,如果这是你想要做的。我想你的意思是:

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

      问号 (?) 和冒号 (:) 换了位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-09
        • 2017-12-13
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-08
        • 1970-01-01
        相关资源
        最近更新 更多