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