我有以下嵌套的单一路线:
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,但我根本没有使用'show'路径。
感谢任何投入。
答案 0 :(得分:1)
我相信你可以通过使用详细路径方法edit_listing_logo_path(@listing)
(如@Martin Sojka所述)或使用符号而不是对象本身来获得所需的答案。
所以不要使用普通形式:
form_for [ @listing, @logo ]
您可以通过编写:
来处理对象特性(和尾随ID)form_for [@listing :logo]
如果你想在控制器上调用另一个动作,你可以在数组中加前缀:
form_for [:edit, @listing :logo]
希望它对你有用 - 它似乎解决了我的问题。