link_to_function在Rails 3中哪里消失了?

时间:2010-02-12 07:28:52

标签: ruby-on-rails ruby-on-rails-3

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

3 个答案:

答案 0 :(得分:27)

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

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

不幸的是,这对于x到函数方法并不适用。暂时存在prototype legacy helpers,它们不再是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

等...

或者那种效果。我无法找到官方文档来备份我的说法。所以release notes现在必须做。

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

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

答案 1 :(得分:8)

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

link_to "name", nil, :onlick => "alert('Hello, world!')"

答案 2 :(得分:0)

link_to_remote可以像这样完成

  

link_to“target”,:remote =&gt;真

并做一个ajax帖子/得到你

  

link_to“target”,{:controller =&gt;   controller,:action =&gt;方法,} ,: remote =&gt;真

在rails 2中就像这样

  

link_to_remote“target”,:url =&gt;   {:controller =&gt; controller,:action =&gt;   方法,} ,:远程   =&GT;真