24

我只是在玩 Rails 3 beta 并注意到 link_to_function 现在不见了。我认为有一种替代方法可以实现相同的结果(onclick 事件?),但我想知道是否有更多 Rails-3'y 方法来做到这一点。TIA。

4

3 回答 3

27

Rails 3 似乎已经取消了 Prototype Helper,转而采用一种不那么突兀/JS 库不可知论的方法。目标是消除 Rails 生成的所有内联 JavaScript。Prototype Helper 生成了几乎所有的 javascript。

现在,只需提供 :remote => true 选项,任何非远程助手变体都将在您选择的 JS 库中为远程调用生成正确的 javascript。

不幸的是,这不适用于 x to function 方法。目前有一些原型遗留助手不再是 Rails 的核心部分。

您还可以使用 ActionView::Helpers::PrototypeHelper::JavascriptGenerator::GeneratorMethods 中定义的调用来为 :onclick 提供 javascript 代码作为 link_to 的 html_option,但这并不完全漂亮。

例子:

Rails < 3                      | Rails 3
link_to_remote "target", url   | link_to "target", url, :remote => true
form_remote_for @post          | form_for @post, :remote => true

ETC....

或者类似的东西。我很难找到官方文件来支持我的主张。所以现在必须做发行说明。

在使用它之前,您需要包含正确的 js 源文件。确保您正在加载prototype.js 和rails.js,或者为它们选择的JS 框架的库和驱动程序。

请记住,Rails 3 现在处于测试阶段。但这并不意味着它已经完成。老实说,我不知道如何替换 link_to_function。它违背了不显眼的 javascript 的理想。

于 2010-02-12T07:42:26.657 回答
8

要回答我自己的问题,这似乎可行并且足以满足我的需要:

link_to "name", nil, :onlick => "alert('Hello, world!')"
于 2010-02-12T10:57:02.197 回答
0

link_to_remote 可以这样完成

link_to "目标",:remote => true

并做一个ajax帖子/让你拥有

link_to "目标", {:controller => 控制器, :action => 方法, }, :remote => true

在rails 2中是这样的

link_to_remote "目标", :url => {:controller => 控制器, :action => 方法, }, :remote => true

于 2011-05-24T10:11:31.413 回答