私が JS ファイルを要求しているのに、Rails が HTML ファイルを提供しているという奇妙な問題です。そして、それは私のステージング サーバー (Heroku) にのみあり、ローカル マシンにはありません。
私はスクリプトを介して他のページに含める必要がある動的なJavascriptファイルを持っています:
<script type="text/javascript" src="http://example.com/embed.js></script>
その埋め込みは、HTML も処理するコントローラーとアクションにマップされます。関連するルートは次のようになります。
match "/embed(.:format)" => "articles#embed", as: "embed"
そして、コントローラーのアクションはかなり標準的です。
def embed
respond_to do |format|
format.html do
#it renders some HTML
end
format.js #no block is given
end
end
そして、app/views/articles の下に 2 つのビューがあります
- 埋め込み.html.haml
- 埋め込み.js.コーヒー
私のローカル マシンでは、localhost:3000/embed.js を要求すると機能します。Javascript を問題なくレンダリングします。ただし、ステージング サーバーでは、ログに次のように表示されます。
Started GET "/embed.js" for 124.168.219.36 at 2012-11-04 00:23:01 +0000
Processing by ArticlesController#embed as JS
Rendered articles/embed.html.haml (1.5ms)
Completed 500 Internal Server Error in 2ms
内部サーバー エラーは問題ではありません。問題は、リクエストを JS として認識しているにもかかわらず、HTML テンプレートをステージングでのみレンダリングすることを決定していることです。
どうしたの?