我在[{1}}中定义了一个样式表application.css
:
layouts/application.html.erb
但是,网站的某个部分会使用完全不同的样式表<%= stylesheet_link_tag "application" %>
,我在其dashboard.css
中定义了该样式表:
index.html.erb
除非我删除应用程序布局文件中的stylesheet_link_tag,否则会出现使仪表板视图怪异的冲突。如果我将应用程序布局样式表标记移动到_header.html.erb部分,该部分使用非仪表板部分中的每个视图呈现,如下所示,则它不起作用。我怎么称呼他们?
<head>
<title>My title</title>
<%= stylesheet_link_tag "dashboard" %>
..
答案 0 :(得分:5)
为您的信息中心创建单独的布局,并使用特定的样式表。
如果您想为其中一个控制器(及其所有操作)定制样式表,那么这很容易做到。创建一个匹配名称的布局,也就是说,对于users_controller
,模板名称应为users.html.erb
。
您还可以为控制器指定任何布局。
class UsersController < ApplicationController
layout 'some_layout'
end
如果您只想为某些操作设置自定义样式表,请在调用render
时指定相应的布局。
def dashboard
# some logic here
render :layout => 'some_layout'
end
答案 1 :(得分:5)
你应该在head元素的application.html.erb中使用yield语句:
<head>
<%= yield :head %>
</head>
然后在您的视图中,您将使用content_for标记:
<% content_for :head do %>
<%= stylesheet_link_tag "dashboard" %>
<% end %>
还会在嵌套布局上阅读rails docs。它将教你如何使用这种范式获得幻想
答案 2 :(得分:0)
我建议您为仪表板定义第二个布局(app / views / layouts / dashboard.html.erb)。从该布局链接到仪表板样式表。然后从仪表板视图或控制器中使用该布局。
哦,只需使用一些if条件来链接同一布局中的不同样式表:
<%= stylesheet_link_tag(dashboard_views? ? "dashboard" : "application") %>
只需实施dashboard_views?帮助方法根据您的视图返回true或false。