我有两个不同的布局和两个不同的样式表(每个样式表)由一个 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/