link_to_function在Rails 3中哪里消失了?

Psy*_*nix 24 ruby-on-rails ruby-on-rails-3

我刚刚玩Rails 3测试版,发现link_to_function现在已经消失了.我认为有另一种方法可以实现相同的结果(onclick事件?)但我想知道是否有更多的Rails-3'方法.TIA.

EmF*_*mFi 27

Rails 3似乎已经废除了Prototype Helper,转而采用不那么突兀/ JS库无关的方法.目标是消除Rails生成的所有内联JavaScript.Prototype Helper生成了几乎所有的javascript.

现在任何非远程助手变体都会通过提供:remote => true选项为您选择的JS库中的远程调用生成正确的javascript.

不幸的是,这对于x到函数方法并不适用.暂时存在原型遗留助手,它们不再是Rails的核心部分.

您还可以使用ActionView :: Helpers :: PrototypeHelper :: JavascriptGenerator :: GeneratorMethods中定义的调用来提供javascript代码:onclick作为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
Run Code Online (Sandbox Code Playgroud)

等等....

或者那种效果.我无法找到官方文档来备份我的说法.所以发行说明现在必须要做.

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

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


Psy*_*nix 8

要回答我自己的问题,似乎这是有效的,足以满足我的需要:

link_to "name", nil, :onlick => "alert('Hello, world!')"
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案的问题是完全突兀的.我建议你玩jquery或prototype + low pro. (9认同)