Ruby on rails 从“基于渲染的显示视图”返回路径

Ruby on rails 从“基于渲染的显示视图”返回路径,ruby-on-rails,routes,link-to,Ruby On Rails,Routes,Link To,这让我很困惑, 我有两种型号客户有很多:发票和发票属于客户, 我已设置了我的根目录以索引所有发票,也可以通过客户端显示视图访问发票。我的发票显示视图中有一个后退按钮,该按钮链接回发票所属的客户机:id 反向链接表单发票/显示 <%= link_to 'Back', client_path(@invoice.client), class: "btn btn-primary" %> 一个简单的反向链接: link_to 'Back', :back, class: "btn btn-pr

这让我很困惑, 我有两种型号客户有很多:发票和发票属于客户, 我已设置了我的
根目录
以索引所有
发票
,也可以通过
客户端显示
视图访问
发票
。我的
发票显示视图中有一个后退按钮
,该按钮链接回
发票所属的
客户机:id

反向链接表单发票/显示

<%= link_to 'Back', client_path(@invoice.client), class: "btn btn-primary" %>
一个简单的反向链接:

link_to 'Back', :back, class: "btn btn-primary" 
在这种情况下应该这样做。它将使用
HTTP\u REFERER
或Javascript函数进入上一页。有关更多信息,请参阅

更新:

如果您需要“简单反向链接”规则的一些例外,则必须创建自定义解决方案。其中一种解决方案可能是,默认情况下使用
link\u to:back
,但在特殊情况下通过接受自定义的“back\u path”参数来覆盖它。您可以创建一个自定义帮助器来完成此操作

以下示例默认情况下使用标准的反向链接,但允许上一页设置
back\u路径
参数,该参数将被
back\u链接
帮助程序理解

# application_helper.rb
def back_link(params, name: "Back", class: "btn btn-primary")
  if params[:back_path].present?
    link_to name, params[:back_path], class: class 
  else
    link_to name, :back, class: class 
  ens
end
现在,您可以在视图中正常使用链接:

<%= back_link(params) %>
新建
页面表单中,您必须添加
隐藏标签
以传递
返回路径
参数:

# views/invoices/_form.html.erb
<%= hidden_field_tag 'back_path', params[:back_path] %>
最后,您现在可以使用
back\u链接
helper来显示正确的链接:

# views/invoices/show.html.erb
<%= back_link(params) %>
#视图/发票/show.html.erb
我知道这很难看,但事实就是这样。。。此外,这并不是一个理想的解决方案,因为通常在浏览页面时需要一个反向链接的层次结构(并从不同路径访问页面),而此解决方案只解决第一个反向链接。但我认为这是一个可以建立的基础。

一个简单的反向链接:

link_to 'Back', :back, class: "btn btn-primary" 
在这种情况下应该这样做。它将使用
HTTP\u REFERER
或Javascript函数进入上一页。有关更多信息,请参阅

更新:

如果您需要“简单反向链接”规则的一些例外,则必须创建自定义解决方案。其中一种解决方案可能是,默认情况下使用
link\u to:back
,但在特殊情况下通过接受自定义的“back\u path”参数来覆盖它。您可以创建一个自定义帮助器来完成此操作

以下示例默认情况下使用标准的反向链接,但允许上一页设置
back\u路径
参数,该参数将被
back\u链接
帮助程序理解

# application_helper.rb
def back_link(params, name: "Back", class: "btn btn-primary")
  if params[:back_path].present?
    link_to name, params[:back_path], class: class 
  else
    link_to name, :back, class: class 
  ens
end
现在,您可以在视图中正常使用链接:

<%= back_link(params) %>
新建
页面表单中,您必须添加
隐藏标签
以传递
返回路径
参数:

# views/invoices/_form.html.erb
<%= hidden_field_tag 'back_path', params[:back_path] %>
最后,您现在可以使用
back\u链接
helper来显示正确的链接:

# views/invoices/show.html.erb
<%= back_link(params) %>
#视图/发票/show.html.erb

我知道这很难看,但事实就是这样。。。此外,这并不是一个理想的解决方案,因为通常在浏览页面时需要一个反向链接的层次结构(并从不同路径访问页面),而此解决方案只解决第一个反向链接。但我认为这是可以建立的。

这是可以的,除非创建了新发票,否则我将重定向到
show
,因此从那里链接回来会带您回到
新发票表单
这是可以的,除非创建了新发票,否则我将重定向到
show
,因此从那里链接回来会带您回到
新发票表单