0

1つのコントローラ/アクションで使用される2つの異なるレイアウトと2つの異なるスタイルシート(それぞれに1つ)があります。それぞれに1つのスタイルシートを持つ2つの異なるレイアウト

次のエラーを防ぐにはどうすればよいですか?隆起

ライン#5:app/assets/stylesheets/application.css has already been required

アプリ/ビュー/レイアウト/ 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ファイルをロードできたが、2番目のレイアウトにもう1つの<%= stylesheet_link_tag "another_css_file" %>行があるのがわかりません。

これらのスタイルシートの両方をロードしているアセットパイプラインが理由である可能性がありますか? それは単なる相続問題ですか?このコードが実行される前に

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を使用してこれを解決する方法はありますか? それとも、私がやろうとしていることばかりですか? :)

EDIT:

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 

は、なぜそれがこれらのファイルの両方をロードしていますか?そのうちの1つだけを読み込む必要があります。

+1

私たちに 'application.css'と' diashow.css'の内容を見せてください –

+0

それは必要ですか?彼らはまだ同じです。しかし、私はこれが問題になるとは想像もしません。 – Marc

+0

これは役に立ちます。 –

答えて

4

どちらも、これらのファイルは、おそらく、このコマンドが含まれています

= require_tree . 

これは彼らが再帰的にお互いを含んになるだろう。

これらのディレクティブは、js/cssファイルの構文の正しさを維持するために「コメントアウト」されています。それにもかかわらず、Asset Pipelineはこれらのコメントを解析し、指令を実行します。

+0

ありがとうSergio! 'require_tree'行は、コメントアウトされている間は何かできないと思っていました。 ;) – Marc

関連する問題