将Rails路由限制为操作

raf*_*ch2 3 ruby routes ruby-on-rails ruby-on-rails-3

假设我有一个包含动作#new的UsersController.在我的路线文件中,我用以下内容进行映射:

match 'signup', to: 'users#new'
Run Code Online (Sandbox Code Playgroud)

现在可以通过/ signup和/ users/new访问此操作.如何将其限制为仅自定义路由.

如果有人回答,我道歉,但我是新手.我搜索过,但还没有找到答案.可能是因为我不知道如何简明扼要地说出这一点.

Chr*_*ald 5

您可以new从用户资源中豁免路由,并将其替换为您的自定义路由:

resources :users, except: [:new]
get 'signup', to: 'users#new', as: "new_user"
Run Code Online (Sandbox Code Playgroud)

导致:

    users GET        /users(.:format)               users#index
          POST       /users(.:format)               users#create
edit_user GET        /users/:id/edit(.:format)      users#edit
     user GET        /users/:id(.:format)           users#show
          PUT        /users/:id(.:format)           users#update
          DELETE     /users/:id(.:format)           users#destroy
 new_user GET        /signup(.:format)              users#new
Run Code Online (Sandbox Code Playgroud)