我有一个link_to_remote方法:
<%= link_to_remote "Country", :url =>{:controller =>'country',:action=>'get_country_info',:id=>@count_id.to_i},:update=>"Details6",:loading => "Element.show('loader');",:complete => "Element.hide('loader');"%>
我想在用户点击后禁用该链接,我尝试使用:before=>"this.style.display=none"
删除链接...我想要禁用自然。任何人都可以帮助我如何实现这一点。
答案 0 :(得分:2)
我为link_to修复了以下内容:
在帮助者的某处添加:
module ActionView
module Helpers
module UrlHelper
def link_to_with_disable(*args, &block)
if block_given?
link_to_without_disable(*args,&block)
else
html_options = args[2] || {}
disable_with = html_options[:disable_with]
if disable_with
if html_options[:disable_with].kind_of? String
html_options[:"data-onloadingtext"] = disable_with
elsif html_options[:disable_with].kind_of? Array
html_options[:"data-onloadingtext"] = disable_with[0] if disable_with[0]
html_options[:"data-oncompletetext"] = disable_with[1] if disable_with[1]
end
end
link_to_without_disable(*args)
end
end
alias_method_chain :link_to, :disable unless method_defined?(:link_to_without_disable)
end
end
end
然后加载包含以下内容的javascript文件:
$("a[data-onloadingtext]").live("ajax:before", function(et, e){
$(this).text($(this).attr('data-onloadingtext'))
.attr('onclick','return false;')
.addClass('disabled');
});
$("a[data-oncompletetext]").live("ajax:complete", function(et, e){
$(this).text($(this).attr('data-oncompletetext'));
});
现在你可以做类似的事情:
<%= link_to 'foo', 'bar', :remote => true, :disable_with => 'foo_disabled' %>
和
<%= link_to 'foo', 'bar', :remote => true, :disable_with => ['foo_loading','foo_loaded'] %>
我非常愿意接受反馈;)仍然是ruby的新手,并试图学习如何整齐地解决问题;)
答案 1 :(得分:0)
它可能有点乱,但你可以做一个
<%= link_to_remote "Country", :url =>{:controller =>'country',:action=>'get_country_info',:id=>@count_id.to_i},:update => "Details6",:loading => "Element.show('loader');",:complete => "Element.hide('loader');", :href => "return false;" %>
在链接中返回false会禁用它(适用于javascript函数,因此在执行某些操作后它们不会继续链接
答案 2 :(得分:0)
答案 3 :(得分:0)
link_to_remote item_masters_path, {},:onclick => "return false"
=> "<a href=\"#\" onclick=\"return false; new Ajax.Request('/item_masters/index', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('kzW0m2Vjg5I9IPeMs3hDMzQUFyyaBgVH35K0AEg77ls=')}); return false;\">/item_masters</a>"