2012-04-10 5 views
9

私はHerokuにRails 3.2アプリを導入しています。私はhttps://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedarとしてローカルで資産をプリコンパイルしています。Herokuが 'devise/sessions.jsがプリコンパイルされていません'を返すのはなぜですか?

しかし、私は

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

を取得していますが、誰がこれを検出しましたか?

Deviseのjavascriptがプリコンパイルされていることを確認する正しい方法は何ですか。

ありがとうございます!

+0

あなたは杉のスタック上にありますか? – sethvargo

+0

こんにちは。はい、私はシーダーにいます –

答えて

6

ありがとうございます。ちょっと考えた後、この問題は、コントローラ固有のJavaScriptを呼び出すようにアプリがどのように設定されていたかにまでわかりました。他の誰かがこの問題にぶつかる場合は、ここで私がしたことがあります。

私はコントローラ固有の.jsをレイアウトファイルの次のタグでロードしていました。

<%= javascript_include_tag "application", params[:controller] %> 

問題は、特定のcotroller.jsファイルが存在しない場合は失敗します。私の場合は、devise/sessions.jsファイルを作成していないので、ログインページが失敗しました。

私はこのファイルを作成できましたが、これは面倒なアプローチだと感じました。空のファイルがたくさんあるという考えが好きではありません。

代わりに、私は明示的に

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

application_helpersで、次のヘルパーを使用してビュー

<% javascript 'controller.js' %>  

からコントローラ固有のJavaScriptを呼び出していますと、これまで正常に動作しているようです。

フィードバックをお寄せいただきありがとうございます。

+3

jsファイルを追加する方法について興味がある人は、 'app/assets/javascripts'に' devise'フォルダを作成してそこに 'sessions.js'ファイルを置くことができます。あなたがサインインページを空想的にしたい場合は便利です。注意:個別にアクセスするアセットをリストする必要があります:http://stackoverflow.com/questions/7425929/rails-3-1-strategy-for-pre-compiling-controller-specific-js-assets – brookr

+0

ありがとう、これ私が何時間も探していた答えです! –

3

rake assets:precompileを試してみてください。

config.assets.precompile += %w(*.css *.js) 

またはあなたのファイルを指定:あなたのconfig /環境/ production.rbにこれを追加すること


してみてください。

+0

こんにちはJustin D.私はあなたの答えをありがとう、多くのありがたいです。これはうまくいきました(必要な.jsファイルを作成していればうまくいきました)が、この問題について一晩考えてみたら、コントローラー固有のjavascriptを呼び出す方法に問題があったことがわかりました。同様の問題が発生する可能性のある他の人を助けるための回答を追加しました。 –

5

私のソリューション:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
関連する問題