我只是在玩 Rails 3 beta 并注意到 link_to_function 现在不见了。我认为有一种替代方法可以实现相同的结果(onclick 事件?),但我想知道是否有更多 Rails-3'y 方法来做到这一点。TIA。
3 回答
Rails 3 似乎已经取消了 Prototype Helper,转而采用一种不那么突兀/JS 库不可知论的方法。目标是消除 Rails 生成的所有内联 JavaScript。Prototype Helper 生成了几乎所有的 javascript。
现在,只需提供 :remote => true 选项,任何非远程助手变体都将在您选择的 JS 库中为远程调用生成正确的 javascript。
不幸的是,这不适用于 x to function 方法。目前有一些原型遗留助手不再是 Rails 的核心部分。
您还可以使用 ActionView::Helpers::PrototypeHelper::JavascriptGenerator::GeneratorMethods 中定义的调用来为 :onclick 提供 javascript 代码作为 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
ETC....
或者类似的东西。我很难找到官方文件来支持我的主张。所以现在必须做发行说明。
在使用它之前,您需要包含正确的 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 "目标",:remote => true
并做一个ajax帖子/让你拥有
link_to "目标", {:controller => 控制器, :action => 方法, }, :remote => true
在rails 2中是这样的
link_to_remote "目标", :url => {:controller => 控制器, :action => 方法, }, :remote => true