загрузка jrails рельсы remote_form_tag - PullRequest
1 голос
/ 02 декабря 2009

Я недавно переключился на jQuery, используя jRails для приложения. Кажется, 99% всех моих предыдущих RJS работают отлично, единственное исключение - обратный вызов: loading => при использовании remote_form_tag.

<% 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?

Спасибо

1 Ответ

1 голос
/ 04 декабря 2009

Я считаю, что чище избегать встроенного 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');
    });
});
...