首页 > 解决方案 > Ruby on Rails 链接到无效输入后表单失败的上一页

问题描述

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

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

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

标签: ruby-on-railsformssessionbackbreadcrumbs

解决方案


您可以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 %>

推荐阅读