0

rails 5のコントローラから部分的にレンダリングしようとしましたが、ajaxを使用して成功しましたが、アクションが部分的にレンダリングされた後に空のデータがajaxに渡されます。Rails 5でrespond_withを使用したときに空のボディ

同じコードがrails4で動作していました。私もrails5のレスポンダーの宝石を更新しました。

コントローラー:

respond_with do |format| 
    format.html do 
     if request.xhr? 
     @images = get_images 
     session[:prev_images] = submitted_ids 
     session[:prev_winner] = winner_id 
     @prev_images = Lentil::Image.find(submitted_ids).sort_by{ |i| i.id } 
     @prev_winner = session[:prev_winner] 

     render :partial => "/lentil/thisorthat/battle_form", :locals => { :images => @images, :prev_images => @prev_images, :prev_winner => @prev_winner }, :layout => false, :status => :created 
     end 
    end 

アヤックス:

$(document).on('ajax:success', function (evt, data, status, xhr) { 
    // Insert new images into hidden div 
    $('.battle-inner:eq(1)').replaceWith(data); 

    $('.battle-inner:eq(1)').imagesLoaded() 
     .done(function() { 
      // Remove old images 
      $('.battle-wrapper:eq(0)').remove(); 

      // Div with new images moves up in DOM, display 
      $('.battle-wrapper:eq(0)').show(); 

      // Hide Spinner 
      $('#spinner-overlay').hide(); 
    }); 

_battle_form:

<div class="grid battle-inner"> 
    <%= semantic_form_for :battle, :remote => true, :url => thisorthat_result_path do |form| %> 
     <% @images.each do |image| %> 
     <div class="battle-image-wrap grid__cell"> 
     </div> 
     <% end %> 
<% end %> 
</div> 

答えて

0

は、JSのようにあなたの要求の処理ですか?

は、それはもはやレール> 5.1の依存であるjQueryの-UJSの問題だったformat.htmlformat.js

+0

からデータを読み取るためにはい、私の要求を処理しつつあります。デバッガでは、私はjavascriptを流れるコントロールを見ることができますが、データパラメータは未定義です。 同じことがrails4で行われています。 format.jsと同じ動作 –

関連する問題