4

我有以下嵌套的单数路线:

resources :listings do
  resource :logo, only: [ :edit, :update ]
end

它按预期生成 2 条正确的路线:

edit_listing_logo GET /listings/:listing_id/logo/edit(.:format) logos#edit
listing_logo PUT /listings/:listing_id/logo(.:format) logos#update

现在,当我重定向到 edit_listing_logo_path

redirect_to edit_listing_logo_path( @listing, @logo )

或者当我创建更新表单时

<%= form_for [ @listing, @logo ] do |f| %>

生成的链接总是像这样在末尾附加单个资源 ID

/listings/2/logo.1

我还没有在这个应用程序中使用响应格式,所以它工作正常。但是这个链接生成似乎很奇怪,如果与各种响应格式一起使用,我希望它会引起问题。

请注意,这也在这里讨论过Rails Nested Singular Resource Routing但我根本没有使用“显示”路径。

感谢您的任何意见。

4

1 回答 1

1

我相信您可以通过使用详细路径方法edit_listing_logo_path(@listing)(如@Martin Sojka 所述)或使用符号而不是对象本身来获得所需的答案。

因此,不要使用正常形式:

form_for [ @listing, @logo ]

您可以通过以下方式处理对象特异性(和尾随 ID):

form_for [@listing :logo]

如果你想在控制器上调用另一个动作,你可以在数组中添加前缀:

form_for [:edit, @listing :logo]

希望它对你有用 - 它似乎解决了我的问题。

于 2013-09-29T14:57:07.690 回答