如何在布局之外的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_for
与yield
一起使用,以在头部添加其他标记。
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%> ... HEAD>
产品/ edit.html.erb
<%content_for:css do stylesheet_link_tag'products_edit' 结束%>
如果标记位于布局中,则不能。
您可能需要该控制器操作的不同布局。 在渲染上像这样:
render :action => "index", :layout => "some_other_layout
您还可以在控制器类中使用此行为整个控制器设置不同的默认布局:
layout "some_other_layout"
检查API文档,您可以使用该布局方法上的条件执行一些复杂的操作。