错误:表单响应必须重定向到另一个位置

Posted

技术标签:

【中文标题】错误:表单响应必须重定向到另一个位置【英文标题】:Error: Form responses must redirect to another location 【发布时间】:2022-01-20 20:08:14 【问题描述】:

我需要渲染从 API 收到的 html 代码。

在 Rails 6 中:我在控制器中执行此操作,并且运行良好。我调用了收到响应的 web 服务,然后我被重定向到渲染生成的代码。很好!

class GatewayController < ApplicationController
  def new
    init_gateway_call
  end

  def create
    call_gateway
    render_gateway_response
  end

  private

  ...

  def render_gateway_response
    render(html: @gateway_response.message.html_safe)
  end
end

new.html.erb:

<%= form_with url: gateway_path, local: true do |f| %>
  ...
<% end %>

没有:create.html.erb

** Rails 7 **

我调用网络服务。我得到了答案,但我的页面处于空闲状态,并且出现此错误。

错误:表单响应必须重定向到 FormSubmission.requestSucceededWithResponse 的另一个位置 (application-0f0c10fb8f5683e32fc53a93a8a323c328de61682ca16fb65a6a2b8a3ba5d087.js:1614) 在 FetchRequest.receive (application-0f0c10fb8f5683e32fc53a93a8a323c328de61682ca16fb65a6a2b8a3ba5d087.js:1390) 在 FetchRequest.perform (application-0f0c10fb8f5683e32fc53a93a8a323c328de61682ca16fb65a6a2b8a3ba5d087.js:1374)

到目前为止,我尝试过:

# GatewayController
respond_to :create, format: :html, gateway_response: @gateway_response.message.html_safe
<%= gateway_response %>

没有成功...你有什么想法吗?不然就长周末了^^

【问题讨论】:

@KenWhite ...出于好奇...为什么要删除 Rails 7,因为这是我在迁移时遇到的问题,从 6.1(它正在工作)到 7(不再工作)? 因为你添加的标签已经有该信息,所以标题中不需要重复。 【参考方案1】:

我在发布我的问题时发现了你。错误消息似乎是 Turbo 错误。我必须让我的表单数据加速错误。

<%= form_with url: gateway_path, local: true, data:  turbo: false  do |f| %>
  ...
<% end %>

让我的控制器保持原样。

render(html: @gateway_response.message.html_safe)

Happy upgrade anyone

【讨论】:

【参考方案2】:

谢谢!我也在 Rails 7 上开发,data: turbo: false 解决了我的问题。

【讨论】:

以上是关于错误:表单响应必须重定向到另一个位置的主要内容,如果未能解决你的问题,请参考以下文章

表单提交后PHP重定向到另一个页面

Ajax表单提交后如何将用户重定向到另一个页面

Ajax 表单提交后如何将用户重定向到另一个页面?

Django 使用绑定表单重定向到另一个视图

使用后台代码中的 Post 方法重定向到另一个页面

我需要从表单中的答案立即重定向到另一个表单