ruby-on-rails - 两种不同的布局,每种布局有一个样式表

标签 ruby-on-rails css model-view-controller layout ruby-on-rails-3.1

我有两个不同的布局和两个不同的样式表(每个样式表)由一个 Controller /操作使用。

如何防止出现以下错误?

第 5 行提出: app/assets/stylesheets/application.css has already been required

app/views/layouts/application.html.erb

2: <html>
3: <head>
4:   <title>Blog</title>
5:   <%= stylesheet_link_tag    "application" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8: </head>

加载其他布局时出现同样的错误,但是"application"然后是"another_stylesheet_file_in_the_same_folder" .

我不明白的是为什么 application.css 文件能够加载,而第二个布局有另一个 <%= stylesheet_link_tag "another_css_file" %>而是在那里排队。

原因可能是正在加载这两个样式表的 Assets 管道吗? 还是仅仅是继承问题?

posts_controller.rb

class PostsController < ApplicationController
  layout :choose_layout

  def choose_layout
    current_uri = request.env['PATH_INFO']
    if current_uri.include?('diashow')
      @diashow = true
      return 'diashow'
    else
      @diashow = false
      return 'application'
    end
  end
...

在执行此代码之前应用程序布局是否已经加载?

有没有办法通过使用 before_filter 来解决这个问题? ? 还是我试图做的只是愚蠢的事情? :)

编辑:

Rails 控制台:

Rendered posts/index.html.erb within layouts/application (10.4ms)
Compiled application.css  (2ms)  (pid 23453)
Compiled diashow.css  (1ms)  (pid 23453)
Completed 500 Internal Server Error in 348ms

为什么要加载这两个文件?它应该只加载其中之一。

最佳答案

这两个文件可能都包含这个命令:

 = require_tree . 

这将使它们递归地相互包含。

这些指令被“注释掉”以保持 js/css 文件的语法正确性。尽管如此,Asset Pipeline 仍会解析这些注释并执行指令。

关于ruby-on-rails - 两种不同的布局,每种布局有一个样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8696410/

相关文章:

ruby-on-rails - 如何防止 scaffold.css 覆盖我的自定义 css?

ruby-on-rails - 如何将参数从我的新方法传递到 Rails 中的创建方法?

java - Java 中的类和继承——我做错了什么?

ios - 应该将以编程方式构建 View 的代码放在 UIView 还是 UIViewController 中?

css - Nokogiri 刮文本方法替代?

mysql - 带有遗留数据库的回形针

Css 效果无法正常工作到 mvc 中的 @Html.actionlink

html - 滚动条阻止点击图标(在图标顶部)

python - CSS 选择器,按 CHILD 值选择

c# - 从代码访问 View 模型所需的错误消息数据注释属性 - MVC、Razor