如何删除routes.rb中为路径中的参数生成的前缀

时间:2015-05-29 11:12:38

标签: ruby-on-rails ruby routes nested-routes

目前在我的路线中我有:

  # USER RESOURCES
  resources :users do
    resources :repositories
    patch 'change_password'
    get 'account_setting'
  end

account_setting操作生成此路径:

user_account_setting GET    /users/:user_id/account_setting(.:format)       users#account_setting

我想要的是:

user_account_setting GET    /users/:id/account_setting(.:format)       users#account_setting

这两个基本上是相同的,但是第一个为user_添加id前缀,因为它位于用户资源块中,因此会添加。{/ p>

SIDE NOTE

我知道我可以简单地从用户资源块中删除account_setting操作并写入:

get 'users/:id/account_setting', to: 'users#account_setting'

但我不想。

2 个答案:

答案 0 :(得分:8)

您可以按照以下方式执行此操作:

 resources :users do
      member do
        get 'account_setting'
      end
    end

要添加成员路由,请将成员块添加到资源块中。

有关文档,您可以查看http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Resources.html

答案 1 :(得分:-2)

在Rails 4中,您可以更改id参数的名称 只需使用

resources :users, param: :id do
    resources :repositories
    patch 'change_password'
    get 'account_setting'
  end

这将生成

  

/用户/:ID / account_setting