gpt4 book ai didi

ruby-on-rails-3.2 - 让 Rails 嵌套资源路由到正确的嵌套 Controller

转载 作者:行者123 更新时间:2023-12-04 04:51:54 25 4
gpt4 key购买 nike

在 Rails 3.2.11 中,我有以下路由定义

resources :foos do
resources :bars
resources :bangs, :controller => 'foos/bangs'
end

导致以下路线
     foo_bars GET    /foos/:foo_id/bars(.:format)            bars#index
POST /foos/:foo_id/bars(.:format) bars#create
new_foo_bar GET /foos/:foo_id/bars/new(.:format) bars#new
edit_foo_bar GET /foos/:foo_id/bars/:id/edit(.:format) bars#edit
foo_bar GET /foos/:foo_id/bars/:id(.:format) bars#show
PUT /foos/:foo_id/bars/:id(.:format) bars#update
DELETE /foos/:foo_id/bars/:id(.:format) bars#destroy
foo_bangs GET /foos/:foo_id/bangs(.:format) foos/bangs#index
POST /foos/:foo_id/bangs(.:format) foos/bangs#create
new_foo_bang GET /foos/:foo_id/bangs/new(.:format) foos/bangs#new
edit_foo_bang GET /foos/:foo_id/bangs/:id/edit(.:format) foos/bangs#edit
foo_bang GET /foos/:foo_id/bangs/:id(.:format) foos/bangs#show
PUT /foos/:foo_id/bangs/:id(.:format) foos/bangs#update
DELETE /foos/:foo_id/bangs/:id(.:format) foos/bangs#destroy
foos GET /foos(.:format) foos#index
POST /foos(.:format) foos#create
new_foo GET /foos/new(.:format) foos#new
edit_foo GET /foos/:id/edit(.:format) foos#edit
foo GET /foos/:id(.:format) foos#show
PUT /foos/:id(.:format) foos#update
DELETE /foos/:id(.:format) foos#destroy

路径都正确,但 Controller 路由仅对 resources :bangs 正确. resources :bars应该路由到 foos/bars Controller 而不是 bars Controller 。

以前我可以在 foos/ 中设置命名空间 Controller 。处理嵌套资源。
#app/controllers/foos/bars_controller.rb

class Foos::BarsController < ApplicationController
#/foos/:foo_id/bar/:id available here
end

然而,这似乎不再是这种情况了。这种行为何时发生变化,如何在 Rails 3.2.11 中获得相同的功能?

编辑 : 我意识到 resources :bangs导致正确的 Controller 映射,但我希望能够隐式完成。如果我在 :foos 中有多个嵌套资源,我不想为每个资源定义 Controller 。

最佳答案

您可以添加范围来指定模块。 Rails 假定嵌套资源的 Controller 本身不是嵌套的。

resources :foos do
scope module: :foos do
resources :bars
resources :bangs
end
end

关于ruby-on-rails-3.2 - 让 Rails 嵌套资源路由到正确的嵌套 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com