我要求提供 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 下有两个视图
- 嵌入.html.haml
- 嵌入.js.coffee
在我的本地机器上,请求 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 模板。
这是怎么回事?