在Rails 3中从observe_field更改为JQuery

时间:2011-06-29 16:01:21

标签: javascript jquery ruby-on-rails ruby-on-rails-3

在Rails 3之前,我使用此代码动态观察字段并将该字段中的数据传递给控制器​​:

    <%= observe_field :transaction_borrower_netid,
    :url => { :controller => :live_validations, :action => :validate_borrower_netid },
    :frequency => 0.5,
    :update => :borrower_netid_message,
    :with => "borrower_netid" %>

我正在尝试更新该代码以使用Jquery和Rails 3,但我无法让它工作。我更新了 routes.rb 以包含

  match "/live_validations/validate_borrower_netid" => "live_validations#validate_borrower_netid", :as => "validate_borrower"

我正在尝试观察该字段并使用以下方式进行必要的调用:

    jQuery(function($) {
  // when the #transaction_borrower_netid field changes
  $("#transaction_borrower_netid").change(function() {
    // make a POST call and update the borrower_netid_message with borrower_netid
    $.post(<%= validate_borrower_path %>, this.value, function(html) {
        $("#borrower_netid_message").html(html);
    });
  });
})

但它不起作用。我的Javascript和Jquery技能严重缺乏,所以任何人都可以提供的帮助将非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

您需要将<%= validate_borrower_path %>包装在引号中:

$.post("<%= validate_borrower_path %>", this.value, function(html) {

答案 1 :(得分:2)

我最终使用了以下内容:

$('#transaction_borrower_netid').live('change', function() {
// when the #transaction_borrower_netid field changes
// make a POST call and replace the content
        var netID = $('#transaction_borrower_netid').val();
        $.post("/live_validations/validate_borrower_netid", { borrower_netid: $('#transaction_borrower_netid').val() }, function(html) {
            $("#borrower_netid_message").html(html);
        });
})