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 提取到表单中