使用嵌套的浅路由时,无法link_to正确的路径

时间:2016-03-11 02:27:36

标签: ruby-on-rails routes link-to

我在rails应用程序中使用嵌套路由。我已成功链接到clients/:id/invoices/:id我遇到的问题我认为我使用的是浅路线,所以点击invoice show link我的应用重定向来自{{1到/client/:id。现在,当我尝试从此/invoice/:id链接返回到我的show时,我将两条路线混合起来。

当我尝试将client_path客户端路径更改为invoice/34时,

例如client/34变为link_to

我认为这可能与我clients id show中的clients_controller行为有关{/ 1}}

我的路线

@client = Client.find(params[:id])

我的客户控制器显示操作

resources :clients do
resources :invoices, shallow: true
end

客户端show.html.erb

def show
@client = Client.find(params[:id])
@invoices = @client.invoices
end

和我的发票show.html.erb

<% @invoices.where(published: false).each do |invoice| %>
  <tr>
   <td><%= invoice.sender %></td>
   <td><%= invoice.reciever %></td>
   <td><%= invoice.amount %></td>
   <td><%= invoice.currency %></td>
   <td><%= invoice.date %></td>
   <td><%= link_to 'Show', invoice_path(invoice) %></td>
  </tr>                
<% end %>  

1 个答案:

答案 0 :(得分:1)

我认为问题是client_path不知道使用哪个Client,而且它默认为params[:id]。您可能希望link_to看起来像这样:

<%= link_to 'Back', client_path(invoice.client), class: "btn btn-primary" %>

明确声明使用与此Client相关联的Invoice