在Rails 3.0 beta的发行说明中,它说:
“带有Prototype,jQuery驱动程序的不显眼的JavaScript助手”
那么我如何设置Rails 3来使用jQuery呢?它仍然默认加载所有Prototype库。
我认为这意味着Rails 3内置了类似于jRails插件的功能,但也许我误解了:)
另外,作为一个额外的问题,如果我使用Prototype有一种方法可以让Rails加载缩小版本,甚至更好的单个连接JS文件来减少http请求?
感谢。
答案 0 :(得分:2)
当您创建Rails 3应用时,只需传递-J
参数:
$ rails app_name -J
这将跳过包括Prototype库。现在,您只需将最新的jquery.js
文件放入public/javascripts
目录即可。完成后,您还需要rails.js
文件的jQuery版本。你可以在这里得到:
http://github.com/rails/jquery-ujs/blob/master/src/rails.js
编辑:您需要将这些文件包含在布局的顶部以获得功能。您可以通过以下方式执行此操作:
<%= javascript_include_tag "jquery", "rails" %>
希望这有帮助!
答案 1 :(得分:1)
Unobtrusive JS不是指PrototypeHelper方法,而是指远程表单和链接等。这个概念是您在:remote => true
中包含form_for
或支持它的任何帮助方法,然后名为rails.js
的驱动程序将查找这些遥控器并拦截submit
或{ {1}}事件并通过xhr发送。
要使用jquery,您只需要使用jquery ujs驱动程序替换原型ujs驱动程序(它随rails一起提供),该驱动程序在rails 3 beta发布之前不久被提取到自己的repo中。你可以找到它here。
答案 2 :(得分:1)
它可以将多个javascript文件转换为单个压缩的js文件。它甚至可以找出你没有使用的库的哪些部分,也可以删除它们。
答案 3 :(得分:0)
我不知道Rails 3,但我会尝试回答奖金问题。
您可以在public / javascript目录中放置您想要的任何内容。默认情况下,它将加载文件:prototype.js,effects.js,dragdrop.js和controls.js(read more)。如果要压缩所有js文件并将其发送到一个文件中,可以使用此plugin。
当然它不适用于动态生成的js文件。
答案 4 :(得分:0)
我也在尝试用rails 3转换旧的ajax。
据我所知,他们转移到了一个添加data-remote=true
的结构,当你将:remote => true
添加到link_to
之类的内容时,它应该替换link_to_remote
in { rails 3,所以没有更多的onclick方法调用Ajax方法。
那么,Ajax如何在Rails 3中运行呢?好吧,你应该有javascript方法,当你点击具有data-remote=true
属性的链接并且对它做了一些事情时要注意,但实际上并没有将它们包含在Rails中(据我所知),它是库不可知,因为你可以编写这些方法来观察原型,jquery中的点击,自己编写或者其他任何东西。
我确实在github上找到了一些javascript来开始观察这些事件:
中 中我认为为了实际加载jquery而不是原型,你只需将其下载到public/javascripts
并手动指定jquery,使用javascript_include_tag :all
或覆盖javascript_include_tag
(不推荐)
答案 5 :(得分:0)
你可以看一下这篇文章:http://flow.handle.it/past/2010/2/9/jquery_in_rails/。它解释了使用Unobtrusive JS和jQuery的过程。
希望它有所帮助。