我在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 %>
答案 0 :(得分:1)
我认为问题是client_path
不知道使用哪个Client
,而且它默认为params[:id]
。您可能希望link_to
看起来像这样:
<%= link_to 'Back', client_path(invoice.client), class: "btn btn-primary" %>
明确声明使用与此Client
相关联的Invoice
。