9

Rails 3.2 アプリを Heroku にデプロイしています。https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedarに従って、アセットをローカルでプリコンパイルしています。

しかし、私は得ています

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

他の誰かがこれに遭遇しましたか?

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

ありがとう!

4

3 に答える 3

6

すべての提案に感謝します。少し考えてみたところ、この問題は、コントローラー固有の JavaScript を呼び出すようにアプリがどのように構成されているかにかかっていることがわかりました。他の誰かがこの問題に遭遇した場合、これが私がしたことです。

レイアウト ファイルの次のタグを使用して、コントローラー固有の .js を読み込んでいました。

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

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

このファイルを作成することもできましたが、これは厄介なアプローチだと感じました。たくさんの空のファイルが横たわっているという考えは好きではありません。

代わりに、ビューからコントローラー固有の JavaScript を明示的に呼び出しています。

<% javascript 'controller.js' %>    

application_helpers で次のヘルパーを使用する

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

これまでのところうまくいっているようです。

提案をありがとう。

于 2012-04-11T01:56:23.497 に答える
5

私の解決策:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %>
于 2012-10-17T04:03:29.363 に答える
3

実行してみてくださいrake assets:precompile


これを config/environments/production.rb に追加してみてください:

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

またはファイルを指定します。

于 2012-04-10T16:10:16.887 に答える