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

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

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

    很抱歉,在我编写我的第一个rails应用程序时,我提出了一个稍微不那么奇怪的问题。

    我了解布局视图的概念,但如果你在使用它们,有什么方法可以包含特定于视图的js或css文件吗?例如,我有 layouts/products.html.erb 和for products/edit.html.erb 我想要 products_edit.css ,但我不希望所有产品视图都使用css,实现这一点的最佳实践是什么?

    3 回复  |  直到 9 年前
        1
  •  47
  •   Dave Powers    7 年前

    如果你有一个通用的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    10 年前

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

    layouts/products.html.erb:

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

    products/edit.html.erb

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

    如果你的 </head> 标签在你的布局中。

    您可能需要为该控制器操作设置不同的布局。在渲染中如下所示:

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

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

    layout "some_other_layout"
    

    查看API文档,您可以对布局方法的条件进行一些复杂的操作。