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

对不起,我正在编写我的第一个rails应用程序。

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

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

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

否则,您可以将content_foryield一起使用,以在头部添加其他标记。

layout.html.erb

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

products/edit.html.erb

 <% content_for :header do -%> <%= stylesheet_link_tag 'edit_product' %> <% end -%> 

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

布局/ products.html.erb:


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

产品/ edit.html.erb


 <%content_for:css do
     stylesheet_link_tag'products_edit'
结束%>

如果标记位于布局中,则不能。

您可能需要该控制器操作的不同布局。 在渲染上像这样:

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

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

 layout "some_other_layout" 

检查API文档,您可以使用该布局方法上的条件执行一些复杂的操作。