Rails 3.0 beta& JS助手用jQuery

时间:2010-02-11 22:30:44

标签: ruby-on-rails

在Rails 3.0 beta的发行说明中,它说:

  

“带有Prototype,jQuery驱动程序的不显眼的JavaScript助手”

那么我如何设置Rails 3来使用jQuery呢?它仍然默认加载所有Prototype库。

我认为这意味着Rails 3内置了类似于jRails插件的功能,但也许我误解了:)

另外,作为一个额外的问题,如果我使用Prototype有一种方法可以让Rails加载缩小版本,甚至更好的单个连接JS文件来减少http请求?

感谢。

6 个答案:

答案 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)

查看Google Closure

它可以将多个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来开始观察这些事件:

prototype

jQuery

我认为为了实际加载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的过程。

希望它有所帮助。