2013-10-04 23 views
0

我在new.html.erb頁面中有以下代碼。從另一個字段發送一個值作爲ajax在rails中的參數

<h3>Create Make Payment </h3> 
    <%= simple_form_for(@payment) do |f| %> <%= f.error_notification %> <div class="form-inputs"> 
    <%= f.input :email, collection:@arr,:required=>true,:id=>"payment_email" ,:class=>"chosen-select"%> </div> <div class="form-inputs"> 
    <%= f.hidden_field :user_id,:value=>User.find_by_email(ar).id,:id=>"user_id" %> </div> <div class="form-inputs"> 
    <%= f.input :amount,:required=>true%> </div> 

    <div class="form-inputs"> 
    <%= f.input :desc, as: :text ,:required=>true%> </div> 

    <div class="form-actions"> 
    <%= f.button :submit %> </div> <% end %> 

在payment_email選擇框中顯示chage我希望發生ajax請求。我做了以下。

  1. 在付款控制器中的create action中添加了respond_to do |format| format.js

  2. 我在js文件中寫了如下內容。

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}) 

jQuery.fn.submitWithAjax = function() { 
    this.onChange(function() { 
    $.post(this.action, $(this).serialize(), null, "script"); 
    return false; 
    }) 
    return this; 
}; 

$(document).ready(function() { 
    $("#payment_email").submitWithAjax(); 
}) 
  1. 創建了一個名爲create.js.erb文件,並進入在它下面。

    $("#user_id").value("<%= escape_javascript(render(:partial => user_id)) %>");

  2. 我已創建的局部_user_id.html.erb打印值被改變。

現在我在哪裏卡住的是,我不知道如何通過AJAX發送payment_email的價值create.js.erb,我將用它來獲得所需要的用戶ID。我怎樣才能做到這一點?

回答

0

您可以使用jQuery Change event

$(document).ready(function() { 
    $("#payment_email").change(function() { 
    $.ajax({ 
     type: "POST", 
     url: "/controller/action", 
     data: { email: $("#payment_email"); } 
     }); 
    }); 
}); 
相關問題