这是一个非常奇怪的问题。在我的Rails应用程序中,我正在使用UJS将页面上的一个partial替换为另一个。最近,它停止工作了,所以我开始记录整个过程,以查看它在哪里出错。以下是我发现的:
- 链接被点击后,Rails控制台告诉我,所有内容都已呈现,包括所有partials,并返回200 OK。
- 控制器操作中的puts返回正常
- respond.do块中的puts返回正常
- js.erb文件中的puts返回正常
这意味着它一直运行到了执行.js.erb文件并在没有错误的情况下评估ruby代码。但是,这里有一个奇怪的地方 - 没有任何JavaScript代码被执行。当我在.js.erb文件中运行alert('hello?')时,它没有执行。
有人遇到过这个问题吗?它似乎非常奇怪,它会运行erb评估但不会运行js。而且在JavaScript控制台中也没有出现任何错误。
记录一下,我已经:清除了缓存,重新启动了浏览器、Rails应用程序,但什么也没改变。
示例代码:
# view
link_to 'example', some_path, :remote => true
# controller
respond_to do |format|
format.js
end
# .js.erb file
alert('this never shows up');
<% puts 'this shows up in the rails console' %>
非常感谢任何能够为这个奇怪问题提供一点启示的人!