rails中的Unobtrusive JavaScript是什么?

时间:2013-01-29 05:30:23

标签: ruby ujs

我想在我的rails 3 app中使用Ujs。 任何人都能解释一下轨道中突兀和不引人注目的javascripts吗? 为什么版本之前的rails 3不支持ujs?

1 个答案:

答案 0 :(得分:3)

自早期版本以来,Rails已经有了javascript助手。

自Rails 3以来的不同之处在于它现在不显眼,不显眼意味着它将功能与内容分开。

例如以下内容:

<%= link_to "Delete", resource_path(@resource), :method => "delete", :confirm => "Are you sure?" %>

渲染前Rails 3

<a href="/resource/1" onclick="//lots and lots of inline javascript code here">Delete</a>

使用Rails 3 UJS

<a href="/resource/1" data-method="delete" data-confirm="Are you sure?">Delete</a>

不同之处在于,不显眼的javascript在视图中没有内联代码的情况下处理,并通过“数据”属性传递,并在后台处理,其他默认JS位于您的应用程序中,用于获取此数据属性并运行相应的JS代码。

UJS也常用于使用:remote => "true"link_to_remote拨打远程(AJAX)电话。

有关此处的更多信息:AJAX on Rails


基本上UJS意味着包含在Rails中的javascript助手(如确认和AJAX等)与视图代码(HTML)分开。

UJS帮助程序也可以轻松切换,例如,如果您更喜欢使用Prototype,可以在保持帮助程序功能的同时轻松地从jQuery切换。

为什么Rails旧版本不支持UJS,因为它当时并没有内置,所以它是用内联JS完成的。