簡體   English   中英

在Rails 5中使用response_with時為空

[英]Empty body when respond_with used in Rails 5

我正在嘗試使用ajax(成功時)從Rails 5中的控制器呈現部分,但是在動作呈現部分之后,空白數據將傳遞給ajax。

相同的代碼正在使用rails4。 我也為rails5更新了響應器gem。

控制器:

 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();
    });

_戰斗形式:

<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>

您的請求是否以JS處理?

嘗試更換format.htmlformat.js

這是jquery-ujs的問題,它不再依賴於rails> 5.1。 需要使用rails-ujs依賴項。

https://blog.bigbinary.com/2017/06/20/rails-5-1-has-dropped-dependency-on-jquery-from-the-default-stack.html

//從響應中讀取數據

.on('ajax:error', function(event) {
    var detail = event.detail;
    var data = detail[0], status = detail[1],  xhr = detail[2];
    // ...
});

暫無
暫無

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

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