如何在rails项目中分配不同的样式表?

Sim*_*ton 5 css ruby-on-rails

我有一个样式表,application.css定义layouts/application.html.erb如下:

<%= stylesheet_link_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

但是,网站的一部分视图将使用完全不同的样式表,dashboard.css我在其中定义index.html.erb:

<head>
    <title>My title</title>
    <%= stylesheet_link_tag "dashboard" %>
..
Run Code Online (Sandbox Code Playgroud)

除非我删除应用程序布局文件中的stylesheet_link_tag,否则会出现使仪表板视图怪异的冲突.如果我将应用程序布局样式表标记移动到_header.html.erb部分,该部分使用非仪表板部分中的每个视图呈现,如下所示,则它不起作用.我怎么称呼他们?

<%= stylesheet_link_tag "application" %>
<header>
     <div id="headercontainer">
..
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 5

使用特定样式表为仪表板创建单独的布局.

如果您想要为其中一个控制器(及其所有操作)定制样式表,那么这很容易做到.创建一个具有匹配名称的布局,也就是说,对于您的users_controller模板名称应该是users.html.erb.

您还可以为控制器指定任何布局.

class UsersController < ApplicationController
  layout 'some_layout'
end
Run Code Online (Sandbox Code Playgroud)

如果只想为某些操作设置自定义样式表,请在调用时指定相应的布局render.

def dashboard
  # some logic here
  render :layout => 'some_layout'
end
Run Code Online (Sandbox Code Playgroud)


Chr*_*ier 5

你应该在head元素的application.html.erb中使用yield语句:

<head>
  <%= yield :head %>
</head>
Run Code Online (Sandbox Code Playgroud)

然后在您的视图中,您将使用content_for标记:

<% content_for :head do %>
  <%= stylesheet_link_tag "dashboard" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

还阅读嵌套布局上的rails文档.它会教你如何使用这个范例