3

我有一个 link_to_remote,我想确保人们在等待它返回时只能单击它一次。

有人点击后有没有好的方法来禁用它?(更改链接的文本也很好,但我也想禁用它以确保)。

这是 Ruby on Rails 顺便说一句。

4

2 回答 2

3

您不能禁用链接,但可以更改例如 href。

因此,您可以使用 :before 或 :loading 钩子来“禁用”使用 javascript 的链接。

于 2010-03-01T19:43:23.307 回答
3

我最终像 Edgard 建议的那样替换了 :before 块中的链接:

<div id="parent">
  <%= link_to_remote "Click Here",
    {:url => "/some_long_url",
    :method => :post,
    :before => "$('#parent').html('#{escape_javascript(link_to("Click Here"))}');"} %>
</div>

请注意,这使用 JQuery。如果您使用的是原型,您可能需要将“.html”方法更改为原型等效项(我相信“.update”)。

然后在进行 AJAX 调用后,它会用类似...的东西重绘 link_to_remote

render :update do |page|
  page.replace_html  'parent', :partial => 'partial_containing_your_link_to_remote', :locals => {}
end

第一部分中的 link_to_remote 确实应该在同一部分中以保持干燥

于 2010-03-03T19:03:58.137 回答