Ruby 在 Rails Link 到表单上的上一页输入无效后失败
Ruby on Rails Link to Previous Page on Form Failing After Invalid Input
我的应用程序中有一个表单页面,我正在尝试向其中添加面包屑导航。可以从两个单独的页面访问该表单,因此我不想使用传统的面包屑,而是想将一个带有单词“返回”的面包屑 links 指向用户来自的页面。我可以使用以下代码让它工作:
<%= content_for :breadcrumbs do %>
<%= breadcrumb t(".back"), :back %>
<%= breadcrumb t(".add_org") %>
<% end %>
但是,如果向表单传递无效输入,则“后退”link 重定向到表单页面,因为会话已更改,而不是用户之前访问的页面。有什么方法可以始终将用户重定向回上一页,即使是在输入无效或刷新后也是如此?
你可以在你的表单上设置一个hidden_field
第一次缓存url_for(:back)
(也就是表单页面之前的link),如下:
<%= 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 %>
我的应用程序中有一个表单页面,我正在尝试向其中添加面包屑导航。可以从两个单独的页面访问该表单,因此我不想使用传统的面包屑,而是想将一个带有单词“返回”的面包屑 links 指向用户来自的页面。我可以使用以下代码让它工作:
<%= content_for :breadcrumbs do %>
<%= breadcrumb t(".back"), :back %>
<%= breadcrumb t(".add_org") %>
<% end %>
但是,如果向表单传递无效输入,则“后退”link 重定向到表单页面,因为会话已更改,而不是用户之前访问的页面。有什么方法可以始终将用户重定向回上一页,即使是在输入无效或刷新后也是如此?
你可以在你的表单上设置一个hidden_field
第一次缓存url_for(:back)
(也就是表单页面之前的link),如下:
<%= 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 %>