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

Tuc*_*ker 4 ruby routes ruby-on-rails nested-routes

目前在我的路线我有:

  # USER RESOURCES
  resources :users do
    resources :repositories
    patch 'change_password'
    get 'account_setting'
  end
Run Code Online (Sandbox Code Playgroud)

这会为account_setting操作生成此路径:

user_account_setting GET    /users/:user_id/account_setting(.:format)       users#account_setting
Run Code Online (Sandbox Code Playgroud)

我想要的是:

user_account_setting GET    /users/:id/account_setting(.:format)       users#account_setting
Run Code Online (Sandbox Code Playgroud)

这两个基本上是相同的东西,但第一个有rails 的user_前缀,id因为它在用户资源块中.

边注

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

get 'users/:id/account_setting', to: 'users#account_setting'
Run Code Online (Sandbox Code Playgroud)

但我不想.

Vru*_*war 8

你可以这样做:

 resources :users do
      member do
        get 'account_setting'
      end
    end
Run Code Online (Sandbox Code Playgroud)

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

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