簡體   English   中英

通過ajax調用渲染railsfields_for

[英]Render rails fields_for through ajax call

我有一個AJAX電話:

$('#enrollment_members').change(function(){
var memberNumber = $(this);
$.ajax({type: 'GET',
      url: $(this).href,
      type: "get",
      data: { members: memberNumber.val() },
      error: function(){ alert("There was a problem, please try again.") }
      });
return false;

console.log(data);
});

通過它我將params [:members]發送到一個新方法中。

我想做這樣的事情:

def new
  @enrollment = Enrollment.new
  params[:members] ? params[:members].to_i.times { @enrollment.atendees.build } : @enrollment.atendees.build

  respond_to do |format|
    format.js
  end
end

我需要此值才能知道要構建多少fields_for

但這是在新操作中,在members輸入字段中輸入值后,如何更新新視圖的內容?

在該三元組中,@ enrollment.atendees包含4個對象。

我的new.js.erb

$("#contact-wrap").html("<%= j render(:partial => 'enrollments/form') %>");

xhr響應包含4個fields_for表單。

#enrollment_members對象是否是您要傳遞給控制器​​的輸入值?

如果是這樣,請嘗試以下操作:

$('#enrollment_members').change(function(){
  var memberNumber = $(this);
  $.ajax({type: 'GET',
    url: $(this).href,
    type: "get",
    data: { members: memberNumber.serialize() }, //CHANGE
    error: function(){ 
      alert("There was a problem, please try again.") 
    }
});
return false;

嗯,您確定要為此定制解決方案嗎? fields_for中動態添加/刪除子代的行為已經被嵌套 (如不再嵌套 )或 (更有希望)之類的一些寶石解決了

我建議您實際上重用他們的庫,即使您需要按自己的方式進行調整。 因為執行AJAX請求是完全沒有意義的。 您的AJAX是一個GET請求,它將始終執行相同的操作,除非您有一個自定義的atendees.build ,它將為后續調用做一些奇怪的事情(例如在某處增加全局計數器)。

我上面提到的那些gem實際上將保存HTML字段以在“模板”(本地存儲在HTML或JS中)中生成,並在要添加新字段時調用此模板。

我通過修改ajax調用使其工作:

$('#enrollment_members').change(function(){
var memberNumber = $(this);
$.ajax({type: 'GET',
      url: $(this).href,
      type: "get",
      dataType : "html",
      data: { members: memberNumber.val() },
        success: function( data ) {
          var result = $('<div />').append(data).find('#contact-wrap').html();
          $('#contact-wrap').html(result);
          $('#atendees-wrap').show();
        },
        error: function( xhr, status ) {
          alert( "Sorry, there was a problem!" );
        }
      });
return false;

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM