使用嵌套浅层路由时无法 link_to 更正路径
Can't link_to correct path when using nested shallow routes
我在 rails 应用程序中使用嵌套路由。我成功地 link 到 clients/:id/invoices/:id
我遇到的问题是 运行 我认为我使用的是浅路由,所以在单击 invoice
show link
我的应用程序从 /client/:id
重定向到 /invoice/:id
。现在,当我尝试从 show
link 返回到我的 client_path
时,我发现两条路线混淆了。
例如 invoice/34
变成 client/34
当我尝试 link_to
我的客户端路径时它应该更改为 clients id
.
我认为这可能与我 clients_controller
中的 show
行为有关 @client = Client.find(params[:id])
我的路线
resources :clients do
resources :invoices, shallow: true
end
我的客户控制器显示操作
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 %>
和我的发票show.html.erb
<%= link_to 'Back', client_path, class: "btn btn-primary" %>
我认为问题是 client_path
不知道要使用哪个 Client
,它默认为 params[:id]
。您可能希望 link_to
看起来像这样:
<%= link_to 'Back', client_path(invoice.client), class: "btn btn-primary" %>
其中明确说明要使用与此 Invoice
关联的 Client
。
我在 rails 应用程序中使用嵌套路由。我成功地 link 到 clients/:id/invoices/:id
我遇到的问题是 运行 我认为我使用的是浅路由,所以在单击 invoice
show link
我的应用程序从 /client/:id
重定向到 /invoice/:id
。现在,当我尝试从 show
link 返回到我的 client_path
时,我发现两条路线混淆了。
例如 invoice/34
变成 client/34
当我尝试 link_to
我的客户端路径时它应该更改为 clients id
.
我认为这可能与我 clients_controller
中的 show
行为有关 @client = Client.find(params[:id])
我的路线
resources :clients do
resources :invoices, shallow: true
end
我的客户控制器显示操作
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 %>
和我的发票show.html.erb
<%= link_to 'Back', client_path, class: "btn btn-primary" %>
我认为问题是 client_path
不知道要使用哪个 Client
,它默认为 params[:id]
。您可能希望 link_to
看起来像这样:
<%= link_to 'Back', client_path(invoice.client), class: "btn btn-primary" %>
其中明确说明要使用与此 Invoice
关联的 Client
。