使用rails和ajax调用双重渲染错误

时间:2016-08-21 16:24:10

标签: jquery ruby-on-rails ruby-on-rails-4

我试图用html和js调用来渲染不同的东西。我将在ajax调用中处理json结果。

我一直收到双重渲染错误,说我不能同时使用渲染和重定向。但它们适用于不同的呼叫,所以它不重要吗?

我试图寻找答案但找不到答案。

感谢。

以下是我的代码:

def create
  service = ServiceCall.new.call
  if this
    if abc
      set_flash('success')
    else
      set_flash('notice')
    end

    respond_to do |format|
      format.html { redirect_to(log_in_path) && return}
    end
  elsif that
    respond_to do |format|
      format.html { redirect_to(root_path) && return}
    end
  end

  respond_to do |format|
    format.js { render json: service, status: :ok }
  end
end

1 个答案:

答案 0 :(得分:1)

也许return不能像您期望的那样工作,并且您的块不会在当前方法中执行。它被用作链下游的参数。所以你不要离开当前的方法。一种可能的解决方案:

def create
  service = ServiceCall.new.call
  redirect_path = if this
        if abc
          set_flash('success')
        else
          set_flash('notice')
        end

        log_in_path

      elsif that
         root_path
      end

  respond_to do |format|
    format.html { redirect_to(redirect_path) }
    format.js { render json: service, status: :ok }
  end
end