Rails 4

时间:2017-05-11 02:52:55

标签: ruby-on-rails ruby-on-rails-4

我是铁路路线的新手......

我试图为我的

创建一个别名路由
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

2 个答案:

答案 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最佳实践 - - 使用membercollection路线。

因此,要在/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