Don*_*ham 16 javascript ruby-on-rails
在搜索javascript问题的解决方案时,我看到了有关link_to_function在Rails 3中被弃用的多条评论.但是,我已经能够使用完成基于Rails-3的项目的一部分link_to_function.它工作正常.
作为新的Rails,我担心的是我可能会使用长期不支持的东西,或者可能成为传统黑客.在看api.rubyonrails.org,我看link_to_function显然是::的ActionView ::助手模块JavaScriptHelper作为on Rails的v3.0.4一个Ruby支持的公共方法叫出来.没有关于功能寿命的警告或其他声明.
是否有其他方法/方法我应该使用而不是link_to_function在Rails 3中?或者link_to_function可以使用?
谢谢.
hol*_*lli 25
该link_to_function助手已经在3.2.4再次弃用.
当您需要调用特定的javascript函数等时,该方法本身在一些用例中非常简单和好.您可以轻松添加自己的帮助程序以实现相同的功能.以下代码是从Jeremy的https://github.com/rails/rails/pull/5922#issuecomment-5770442复制的
# /app/helpers/link_to_function_helper.rb
module LinkToFunctionHelper
def link_to_function(name, *args, &block)
html_options = args.extract_options!.symbolize_keys
function = block_given? ? update_page(&block) : args[0] || ''
onclick = "#{"#{html_options[:onclick]}; " if html_options[:onclick]}#{function}; return false;"
href = html_options[:href] || '#'
content_tag(:a, name, html_options.merge(:href => href, :onclick => onclick))
end
end
Run Code Online (Sandbox Code Playgroud)
Mic*_*ley 15
[更新]
正如TomH所提到的,它现在在Rails 3.2.4中再次被弃用
[原始答案]
link_to_function是不再过时,是可以安全使用.细节:
link_to_function预定在Rails 3中删除(当Rails 3处于测试阶段时有一段时间),但该函数被放回到https://github.com/rails/rails/commit/d69e561.有些人(大声地,在提交的评论中)想知道为什么函数被放回去,当Rails 3中的大推动是针对Unobtrusive JavaScript,所以DHH插话:
这是为了在ERb中明确地处理非泛型函数触发器,而不是通过JS手动连接它.UJS在Rails 3中取得的巨大成功是摆脱了大量的样板代码 - 数据确认和数据远程.这些泛型是自动连线的,您不必费心.
但是对于你自己的函数,ala link_to_function"添加日历","Calendar.add()",这是一个更直接,更直接的方法.如果您仍然希望通过外部JS并通过dom手动连接它:准备好,请准备一天.
在Rails 3中对UJS的支持并不是教条主义.就像对REST的支持不一样.我们将向每个人展示主要价值,然后允许自己制作的商店.在这里,它是有道理的.
这,顺便说一句,不是关于原型或任何其他特定的js框架.