我是铁路路线的新手......
我试图为我的
创建一个别名路由resources :users
^ /users/123
我的目标是在网址末尾添加/granted
,例如/users/123/granted
我试图添加get
为同一控制器操作创建另一条路线......我需要这个用于搜索引擎优化
get '/users/:id/granted', to: 'users#show', as: :granted
^我希望这会产生/users/:id/granted
,但我一直在......
/users/:user_id/users/:id/granted
看起来它附加了不同的格式,:user_id
作为参数...但我需要参数保持为:id
我试过
get '/granted', to: 'users#show', as: :granted
它生成/users/:user_id/granted
这是不行的,因为正如我上面提到的......我希望参数键保持为:id
答案 0 :(得分:0)
为了让事情与您想要的完全一致,请改为 -
resources :users
get '/users/:id/granted', to: 'users#show', as: :granted
答案 1 :(得分:0)
我可以看到你需要为2个任务排序:定义新路由(/users/:id/granted
)并使路由成为现有控制器操作的别名(users#show
)。
在此之前,让我在您需要向RESTful资源添加更多自定义操作(除resources :users
创建的7个默认操作之外)时,帮助您熟悉其中一个Rails最佳实践 - - 使用member
和collection
路线。
因此,要在/granted
资源中添加users
成员路由,您可以写:
resources :users do
get 'granted', on: :member
end
此外,要将新添加的路由指向现有的控制器操作(在您的情况下为users#show
),只需将其传递给:to
选项:
resources :users do
get 'granted', to: 'users#show', on: :member
end
如果users
资源下有其他现有成员路由,请在member
块内添加路由:
resources :users do
member do
# other custom member routes
get 'granted', to: 'users#show'
end
end
特定rake routes
路线的 granted
输出:
granted_user GET /users/:id/granted(.:format) users#show