这是一个非常奇怪的问题。我有一个 Rails 应用程序,我在其中使用 UJS 将页面上的一个部分替换为另一个。最近,它停止工作,所以我开始在整个过程中记录,看看它在哪里坏了。这是我发现的:
- 单击链接后,rails 控制台告诉我所有内容都已渲染,包括所有部分,并返回 200 OK。
- 放入控制器动作返回正常
- 放入 respond.do 块返回正常
- .js.erb 文件中的放入返回正常
这意味着它可以一直运行 .js.erb 文件并无错误地评估 ruby。但奇怪的是 - 没有一个 javascript 正在执行。当我在 .js.erb 文件中运行 alert('hello?') 时,它没有执行。
有没有人遇到过这个问题?它会运行 erb 评估但不运行 js,这似乎非常奇怪。并且 js 控制台中也没有出现错误。
作为记录,我已经清除了缓存,重新启动了浏览器,重新启动了 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' %>
非常感谢任何可以对这个奇怪问题有所了解的人!