ruby-on-rails - Ruby on Rails 链接到无效输入后表单失败的上一页
问题描述
我的应用程序中有一个表单页面,我正在尝试向其中添加面包屑。该表单可以从两个单独的页面访问,因此我不想使用传统的面包屑,而是放置一个带有单词“back”的面包屑,链接到用户来自的页面。我可以使用以下代码使其工作:
<%= content_for :breadcrumbs do %>
<%= breadcrumb t(".back"), :back %>
<%= breadcrumb t(".add_org") %>
<% end %>
但是,如果向表单传递了无效输入,则“返回”链接将重定向到表单页面,因为会话已更改,而不是用户之前访问的页面。即使在无效输入或刷新后,有没有办法始终将用户重定向回上一页?
解决方案
您可以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 %>
推荐阅读
- android - Flutter Android Studio 项目没有可用的 AVD
- javascript - How to cancel awaiting messages
- types - 在 Julia 中,为什么在两个元素元组上使用 Pair?
- php - Regex allow only datetime (h:m:s) or an integer
- android - 使用 Kotlin 检查 CheckBoxPreference 时如何启动函数?
- node.js - Download all linked mp3 files from a website using the terminal
- php - Laravel Nova:如何创建自定义字段及其 crud 方法?
- python - 函数绑定到 Tkinter 中的组合框
- python - 为什么 XPATH 的 find_element 在迭代日期选择器时会提供太多的 Web 元素?
- python - 实现“查找所有”算法,在表格中显示匹配的行,并在单击表格单元格时跳转到行