2010-02-12 57 views
24

我只是在玩Rails 3测试版,并注意到link_to_function现在不见了。我猜想有一种实现相同结果的替代方法(onclick事件?),但我想知道是否有更多的Rails-3的方法来做到这一点。 TIA。link_to_function在Rails 3中消失了吗?

+2

对于任何人谁通过谷歌发现这一点,应该指出的是,link_to_function既在莱ls 3和NOT弃用。请参阅https:// github。com/rails/rails /提交/ d69e561或答案在这里:http://stackoverflow.com/questions/5063246/rails-3-status-of-link-to-function-method – noel 2012-05-03 16:14:56

回答

27

Rails 3似乎已经取消了Prototype Helper而转而采用了不太显眼的/ JS库不可知的方法。目标是消除由Rails生成的所有内联JavaScript。 Prototype Helper生成了几乎所有的javascript。

现在,只要提供:remote => true选项,任何helpers的非远程变体都将在您选择的JS库中为远程调用生成适当的javascript。

不幸的是,这并不适用于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的理想。

+0

问题是关于link_to_function(即。直接调用JavaScript,没有UJS的东西)。无论如何感谢您的信息。 – Psynix 2010-02-12 07:46:53

+0

我在写这篇文章时错过了“功能”。我已经更新了解决方案,并针对具体问题提供了更好的答案。 – EmFi 2010-02-12 08:17:25

8

要回答我的问题,似乎这个作品,是足以让我需要什么:

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

该解决方案的问题是完全突兀。我会建议你玩jQuery或原型+低亲。 – 2010-02-12 11:16:30

+1

我不认为这是“完全”突兀的,只要你从onclick =“”调用一个处理程序,而不是在那里实现它。整个UJS的东西还没有成熟,甚至它的创作者也不同意推荐的东西(见http://weblog.jamisbuck.org/2010/3/2/unobtrusive-yet-explicit包括评论)。 – Matt 2010-10-06 14:38:05

0

link_to_remote可以这样

的link_to “目标” 来完成,:远程=>真

,并做了ajax开机自检/让你有

的link_to “目标”,{:控制器=> 控制器:操作=>方法,},:远程=>真

在轨道2是这样

link_to_remote“目标”:URL => {:控制器=>控制器:动作=> 方法,}:远程 =>真