使link_to_remote只能点击一次

时间:2009-07-25 07:28:49

标签: ruby-on-rails ajax prototype

我目前在Ruby on Rails应用程序中使用link_to_remote来使用Prototype呈现远程内容。不幸的是,如果您多次单击创建的链接,它会重新呈现内容。

我想要做的是在第一次点击后禁用链接。

这是我目前使用的代码,

<%= link_to_remote (
      "#{user.name}",
      :update => "#{user.id}_div",
      :url => { :controller => "wishlist_items", :action => "load", :id => user.id },
      :position => "after",
      :html => {:class => "#{user.id}_href"} )
  %>

我知道您可以使用:success:complete来调用JavaScript,但我不知道该怎么做。

非常感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

有几种不同的方法可以执行此操作,具体取决于您希望它的工作方式。如果您希望在单击后禁用该按钮,则可以使用PrototypeHelper文档中列出的其中一个回调:

可以指定的回调是(按顺序):

  • :loading:在浏览器加载数据远程文档时调用。

  • :loaded:在浏览器加载完远程文档后调用。

  • :interactive:当用户可以与远程文档交互时调用,即使它 尚未完成加载。

  • :success:在XMLHttpRequest完成时调用,HTTP状态代码在2XX范围内。

  • :失败:在XMLHttpRequest完成时调用,并且HTTP状态代码不在2XX范围内。

  • :complete:在XMLHttpRequest完成时调用(如果存在成功/失败则触发)。

基本上选择何时禁用它,并使用与此点匹配的回调将链接上的onclick属性设置为“return false;”或类似的东西。如果您不想再显示该元素,也可以删除该元素。

如果你想在第一个可能的点禁用链接,我会做的是为点击事件添加一个事件监听器,无论链接的ID是什么,然后再次设置onclick =“return false;”或者你可以删除/隐藏等。