【发布时间】:2011-11-19 23:58:45
【问题描述】:
这是一个很奇怪的问题。我有一个 Rails 应用程序,我在其中使用 UJS 将页面上的一个部分替换为另一个。最近,它停止工作,所以我开始在整个过程中记录,看看它在哪里坏了。这是我发现的:
- 单击链接后,rails 控制台告诉我所有内容都已渲染,包括所有部分,并返回 200 OK。
- A 放入控制器动作返回正常
- 放入respond.do块返回正常
- 放入 .js.erb 文件返回正常
这意味着它可以一直运行 .js.erb 文件并无错误地评估 ruby。 但奇怪的是 - 没有任何 javascript 正在执行。当我在 .js.erb 文件中运行警报('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' %>
非常感谢任何能够对这个奇怪问题有所了解的人!
【问题讨论】:
-
"并且js控制台也没有出现错误。"
-
对不起;我会自动忽略以连词开头的句子。
-
你说它最近停止工作了——你有没有可能在你的页面上添加了一些干扰返回的 JS?
-
如果您使用的是chrome,您还可以看到浏览器收到的内容:看起来可以吗?
-
是的,我看到它出现在 XHR 下的控制台中 - 状态为 200 OK,它显示 .js.erb 文件中的所有 javascript 作为响应:/(这是截图- cl.ly/BxmT - 我录进来了)
标签: javascript ruby-on-rails ujs