jQuery + Rails有问题,这是真的吗?

13

我在之前的问题中看到了有人评论说最好使用Prototype和Rails一起使用。然而,我的经验是JQuery是一个更优秀的JavaScript库。作为一个新手,我还没有研究如何在Rails中使用JQuery,但我认为这应该可以工作。这种组合可能存在问题吗?特别是在Ajax方面,我是否需要改用Prototype呢?

7个回答

12

我在过去三年中一直使用Rails和(仅限)jQuery处理所有项目,到目前为止没有遇到任何(严重的)问题。

有一个名为jrails的插件,它可以作为prototype的即插即用替代品。

http://github.com/aaronchi/jrails/tree/master

更新:您可以使用它获取所有相同的默认Rails帮助程序,以实现javascript功能。


有趣的插件。感谢提供链接。我需要进一步调查一下。我实际上一直在想如何使用Jquery进行replace_html,所以这很棒。 - Hola
我要补充一点,除非你使用任何显式使用原型的东西(例如Javascript字符串与Rails助手,如remote_form_for),否则很容易。在我的一个项目中,我使用了一个需要原型的管理后端插件,所以我必须做一些工作来确保它能正常工作,但除此之外,没有问题。 - Daniel Huckstep

10

我在rails中同时使用jQuery和Prototype。jQuery用于DOM操作和thickbox(我最喜欢的灯箱插件),但我目前使用Prototype进行AJAX。没有特别的原因,只是还没有想使用jrails插件。我相信将来会这样做的。如果你也同时使用两者,以下代码应该放在你的head标签里:

    <%= javascript_include_tag 'prototype' %>
    <%= javascript_include_tag 'jquery' %>
    <script type="text/javascript">
        var $j = jQuery.noConflict();
    </script>
然后使用带有 $j 的 jQuery。

1
我刚刚注意到,将jQuery放在最后是很重要的,所以请记住这一点。 - madh

5

我在工作中使用jQuery和Rails,并且只有好的评价。我们也使用AJAX。唯一能想到的问题是,如果您同时使用jQuery和原型(prototype),则需要进行jQuery.noConflict()调用。


2

jrails的唯一问题是rjs测试。但是这个补丁增加了5个缺失的8个测试助手。


Ajax表单生成器似乎也是一个问题:https://dev59.com/wnRC5IYBdhLWcg3wP-j4#363608 - Hola

1

在Rails中使用jQuery不会有任何问题,只是它不是原生支持的JavaScript库。实际上,您并不需要使用Rails中的任何JavaScript内置函数,而且(默认情况下)应用程序的RESTful结构应该使AJAX变得简单。

使用prototype和scriptaculous,很多AJAX工作已经为您完成了。使用jQuery,您只需自己编写一些JavaScript代码。


好的,所以Rails的ajax助手无法调整以与Jquery一起使用。 - Hola

1

Rails是为了与Prototype一起使用AJAX等技术而构建的,但你并不一定要使用Prototype。我个人是jQuery的粉丝,你完全可以在Rails中使用它。

你仍然可以使用jQuery来连接Rails中已完成的大量AJAX工作,没有问题。

正如kmorris所说,如果你在同一网站上同时使用jQuery和其他JavaScript库,请务必添加jQuery.noConflict()代码行,否则会发生非常糟糕的事情。


此外,Rails 3 将更加支持各种 JavaScript 框架。尽管它仍将附带 Prototype。 - John Topley

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接