对于稍微有点犹豫不决的问题感到抱歉,因为我正在编写我的第一个rails应用程序。
我了解了布局视图,但是如果您正在使用它们,是否有任何方法可以包含特定于视图的js或css文件?例如,我有layouts/products.html.erb
,而products/edit.html.erb
我想要products_edit.css
,但我不希望所有产品视图的css,实现这一目标的最佳做法是什么?
答案 0 :(得分:47)
如果你有一个通用的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 -%>
答案 1 :(得分:10)
您可以通过执行以下操作在布局的head标记内添加样式表标记:
布局/ products.html.erb:
<head> ... <%= yield :css %> ... </head>
产品/ edit.html.erb
<% content_for :css do stylesheet_link_tag 'products_edit' end %>
答案 2 :(得分:-7)
如果您的</head>
代码位于您的布局中,则不能。
您可能需要该控制器操作的不同布局。就像在渲染上一样:
render :action => "index", :layout => "some_other_layout
此外,您可以在控制器类中使用此行为整个控制器设置不同的默认布局:
layout "some_other_layout"
检查API文档,您可以使用该布局方法上的条件进行一些复杂的操作。