link_to_function在Rails 3中哪里消失了?
我刚刚玩Rails 3测试版,发现link_to_function现在已经消失了。 我认为有另一种方法可以实现相同的结果(onclick事件?)但我想知道是否有更多的Rails-3’方法。 TIA。
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
等等….
或者那种效果。 我无法找到官方文档来支持我的说法。 所以发行说明现在必须要做。
在使用它之前,您需要包含正确的js源文件。 确保您正在加载prototype.js和rails.js,或者为其选择的JS框架加载库和驱动程序。
请记住,Rails 3现在处于测试阶段。 但这并不意味着它已经完成了。 老实说,我不知道如何替换link_to_function。 它违背了不引人注目的JavaScript的理想。
要回答我自己的问题,似乎这是有效的,足以满足我的需要:
link_to "name", nil, :onlick => "alert('Hello, world!')"
link_to_remote可以像这样完成
link_to“target”,:remote => true
并做一个ajaxpost/得到你
link_to“target”,{:controller => controller,:action => method,} ,: remote => true
在轨道2中就是这样的
link_to_remote“target”,:url => {:controller => controller,:action => method,},:remote => true