Ruby on Rails 链接到无效输入后表单失败的上一页

Posted

技术标签:

【中文标题】Ruby on Rails 链接到无效输入后表单失败的上一页【英文标题】:Ruby on Rails Link to Previous Page on Form Failing After Invalid Input 【发布时间】:2021-10-13 10:04:56 【问题描述】:

我的应用中有一个表单页面,我正在尝试向其中添加面包屑。该表单可以从两个单独的页面访问,因此我不想使用传统的面包屑,而是放置一个带有单词“back”的面包屑,链接到用户来自的页面。我可以使用以下代码使其工作:

<%= content_for :breadcrumbs do %>
<%= breadcrumb t(".back"), :back %>
<%= breadcrumb t(".add_org") %>
<% end %>

但是,如果向表单传递了无效输入,则“返回”链接将重定向到表单页面,因为会话已更改,而不是用户之前访问的页面。即使在无效输入或刷新后,有没有办法始终将用户重定向回上一页?

【问题讨论】:

【参考方案1】:

你可以在你的表单上设置一个hidden_field第一次缓存url_for(:back)(也就是表单页面之前的上一个链接),如下:

<%= breadcrumb t(".back"), params.dig(:bread,:back_url) || url_for(:back) %>

<%= form_with(model: bread, local: true) do |form| %>
  <%= form.hidden_field :back_url, value: params.dig(:bread,:back_url) || url_for(:back)  %>
  # the rest of form ...
<% end %>

【讨论】:

好的,我看到你在这里使用了一个叫做面包的模型。那是什么? @Rachel 只是一个例子 我用于表单的模型已连接到数据库表,因此我收到 back_url 的未知属性错误。我不打算将其添加到数据库中,但是您还有其他想法吗? @Rachel 不允许 back_url 参数

以上是关于Ruby on Rails 链接到无效输入后表单失败的上一页的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ruby on Rails 5 将数据从 URL 提取到表单中

Ruby on Rails:以表单提交数组

Ruby on Rails:搜索表单 - 多个搜索字段

从 ruby​​ on rails 重定向到 angular 给 preflight 的响应是无效错误

如何在 Ruby on Rails 中裁剪图像

当我尝试从 ruby​​ on rails 上的表单获取输入时,我得到了简单名称的哈希数组瞬间。如何解决?