Rails 3 中 jQuery 的 AJAX 和 UJS 问题

Problem with AJAX and UJS with jQuery in Rails 3

提问人:Mark Fraser 提问时间:11/22/2010 更新时间:3/15/2011 访问量:1067

问:

我正在尝试按照以下教程进行操作:

http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

和 railscast 在

http://railscasts.com/episodes/205-unobtrusive-javascript

..在这两种情况下,我都遇到了同样的问题。控制器没有呈现 .js 模板(它回退到 .html),因为请求标头没有像它应该的那样请求 javascript。

我正在使用 github 和 jquery 1.4.4 的 jquery ujs

“data-remote=true”属性被提供给表单,就像它应该的那样。但出于某种原因,这不会修改请求。

如果我切换到 prototype.js,它可以工作(使用默认的 prototype.js 和来自 rails 的 rails.js)。

我正在使用 rails 3.0.0

任何建议都值得赞赏。

jQuery Ruby-on-Rails AJAX 不显眼的 JavaScript

评论

0赞 monocle 11/22/2010
这是在所有浏览器中发生还是只发生在某个浏览器中?
1赞 scaney 11/22/2010
请您发布一些示例代码,例如您用于呈现模板的控制器操作
0赞 nathanvda 11/22/2010
您能否在浏览器内的 javascript 控制台(在 chrome 或 firefox 中的 firebug)中显示使用错误。
0赞 Mark Fraser 11/23/2010
Monocle:正如我在FF和Safari中的问题中指出的那样,它的行为略有不同,只是在请求接受的意义上是不一样的。但无论哪种方式,它都不是文本/javascript,就像它应该的那样。
0赞 Mark Fraser 11/23/2010
斯堪尼..我的控制器代码与我链接到的屏幕投射和文章中的代码一样。一行:format.js。但这并不重要,因为发送的请求接受是错误的。如果那不是 text/javascript..控制器不会关注格式 .js,也不会使用 .js 模板。

答:

0赞 Rakesh 11/22/2010 #1

浪费了一天之后...:-(

我发现当你生成一个新的Rails 3应用程序时,会在public/javascripts文件夹中创建一个名为rails.js的文件,以及你在Rails 2项目中看到的所有其他.js文件。

Rails.js 包含所有不显眼的处理程序。默认情况下,Rails 假定您使用的是 Prototype.js 。

对于 Jquery,将文件 rail.js 替换为 https://github.com/rails/jquery-ujs

以下链接帮助了我: http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

评论

0赞 Mark Fraser 11/23/2010
Rakesh,我在问题中说我已经用 jquery-ujs 替换了 rails.js)。
0赞 BandsOnABudget 1/22/2011 #2

“当前”处理此问题的最佳方法是将这只小狗添加到您的 gemfile 中

https://github.com/indirect/jquery-rails

bundle install

然后

rails generate jquery:install #--ui to enable jQuery UI --version to install specific version of JQuery (default is 1.4.2)

然后你就准备好了 - 当你运行生成器时,它会覆盖默认的 rails.js。

0赞 user652922 3/15/2011 #3

我也有类似的问题。然后,我决定既然问题出在 Ajax 上,我应该从非常简单的事情开始。所以,我从这个开始