2013-09-14 4 views
1

В моей форме я пытаюсь обновить поле exchange_rate, когда пользователь меняет поле выбора currency.Как обновить поле через Ajax в Ruby on Rails?

application.js:

$("#invoice_currency").change(function() { 
    $.ajax({ 
     url: '/invoices/get_exchange_rate', 
     dataType: 'script' 
    }) 
}); 

invoices_controller.rb:

def get_exchange_rate 
    from = current_user.base_currency 
    to = params[:currency] 
    @exchange_rate = GoogleCurrency.get_exchange_rate(from, to) 
end 

get_exchange_rate.js.erb:

$('#invoice_exchange_rate').val('<%= @exchange_rate %>'); 

google_currency.rb:

module GoogleCurrency 

    def self.get_exchange_rate(from, to) 

    .... 

    end 

end 

Это не работает еще и потому, по какой-то причине, params[:currency] не могут быть оценены динамически через Ajax.

Может ли кто-нибудь сказать мне, как это делается?

Спасибо за любую помощь.

ответ

2

Ваш AJAX-вызов не передается никакими данными, поэтому params[:currency] будет nil в контроллере.

Вы должны добавить некоторые данные вызова AJAX, например .:

$("#invoice_currency").change(function() { 
    $.ajax({ 
     url: '/invoices/get_exchange_rate', 
     data: { currency: $(this).val() }, 
     dataType: 'script' 
    }) 
}); 
+0

Да, это работает, спасибо много! У меня вроде бы была догадка, но я не знал точного синтаксиса. – Tintin81

Смежные вопросы