是否会重定向到ajax请求上的另一个控制器操作,以便浏览器识别?

时间:2015-02-01 01:43:52

标签: ruby-on-rails ajax

现在,我在提交表单时有一个rails ajax请求,其中包含以下成功代码:

if @event.save
  ...
  respond_to do |format|
    format.js { render 'draw_calendar' }
    format.html { redirect_to show_calendar_path }
  end
end

我需要添加一些代码,如果在表单上设置了新标志,则会为不同的模型生成新的后续表单,当然应该由不同的控制器管理。因此,我想要做的是,如果@event成功保存,请检查该标志(简单),如果已设置,则重定向到另一个控制器操作。首先,如果它是一个ajax请求(format.js),它甚至可以在浏览器中工作吗?第二,浏览器是否会成功呈现从新控制器操作发回的任何内容?

1 个答案:

答案 0 :(得分:0)

是的,浏览器始终遵循ajax请求中的重定向

if @event.save
  if @event.something?
    redirect_to some_other_path(format: params[:format])
    return
  end
  respond_to do |format|
    format.js { render 'draw_calendar' }
    format.html { redirect_to show_calendar_path }
  end
end

如果您需要在javascript代码中检测重定向,我通常会添加自定义标题

response.headers['X-XHR-Current-Location'] = request.fullpath