代码之家  ›  专栏  ›  技术社区  ›  Matt Briggs

如何在布局之外的erb中包含css或javascript?

  •  26
  • Matt Briggs  · 技术社区  · 16 年前

    很抱歉,我在编写我的第一个rails应用程序时,提出了一个略显粗鲁的问题。

    layouts/products.html.erb ,及 products/edit.html.erb 我想要 products_edit.css ,但我不希望所有产品视图都使用css,实现这一点的最佳实践是什么?

    3 回复  |  直到 8 年前
        1
  •  47
  •   Dave Powers    5 年前

    如果您有一个通用的edit.css文件,我建议在布局中使用If

    <%= stylesheet_link_tag 'edit' if params[:action] == 'edit' %>
    

    否则,您可以使用 content_for yield 将其他标记添加到头部。

    layout.html.erb

    <head>
      ...
      <%= yield(:header) if @content_for_header %>
    </head>
    

    products/edit.html.erb

    <% content_for :header do -%>
      <%= stylesheet_link_tag 'edit_product' %>
    <% end -%>
    
        2
  •  10
  •   William Drury erik    8 年前

    通过执行以下操作,可以在布局的head标记内添加样式表标记:

    layouts/products.html.erb:

        <head>
            ...
            <%= yield :css %>
            ...
        </head>
    
    

    <% content_for :css do
        stylesheet_link_tag 'products_edit'
    end %>
    
    
        3
  •  -7
  •   Otto    16 年前

    你不能,如果你的 </head> 标签在您的布局中。

     render :action => "index", :layout => "some_other_layout
    

    您还可以使用控制器类中的此行为整个控制器设置不同的默认布局:

    layout "some_other_layout"
    

    查看API文档,在布局方法上使用条件可以做一些复杂的事情。