1

我最近使用 jRails 切换到 jQuery 作为应用程序。我以前所有 RJS 的 99% 似乎都可以正常工作,唯一的例外是使用 remote_form_tag 时的 :loading => 回调。

<% form_remote_tag :url => '/hostels/update_currency', :loading => visual_effect(:appear, :load_currency), :html => { :id => 'currency' } do %>

我有一个隐藏的 DIV #load_currency 在使用提供的原型助手之前效果很好

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M001648

但是使用新的 jRails 替代品,这个功能似乎不起作用?

我尝试直接使用 RJS 和 jQuery:

:loading => visual_effect(:appear, :load_currency)
:loading => "$('#load_currency').show();"

哪个产品在 html 中:

onsubmit="jQuery.ajax({beforeSend:function(request){jQuery(&quot;#load_currency&quot;).fadeIn();}, data:jQuery.param(jQuery(this).serializeArray()) + '&amp;authenticity_token=' + encodeURIComponent('O7Y7wzFoPPxGSTxIb2bQ3zshrUP+h1OGAUdtyzdQz0A='), dataType:'script', type:'post', url:'/hostels/update_currency'}); return false;">

我还尝试了回调 :before 和 :after 而不是 :loading 并且什么也没得到...有什么想法吗?或者这个功能不能与 jRails 一起使用?

谢谢

4

1 回答 1

1

我发现避免使用内联 javascript 并编写普通的旧 jquery 会更干净。你可以尝试这样的事情:

# view.html.erb
<% form_tag '/hostels/update_currency', :html => { :id => 'currency' } do %>
...


# some_included_javascript_file.js
$(function() {
    $('#currency').submit(function() {
        $('#load_currency').show(); // or do an effect
        $.post(this.action, jQuery.param(jQuery(this).serializeArray()), function() {
            $('#load_currency').hide(); // or do an effect
        }, 'script');
    });
});
于 2009-12-04T10:28:37.130 回答