rafroehlich2
rafroehlich2

Reputation: 1358

Restricting Rails routes to actions

Lets say I have an UsersController that contains an action #new. In my routes file I map with the following:

match 'signup', to: 'users#new'

This action can now be accessed by both /signup and /users/new. How do I restrict it to only the custom route.

I apologize if this has been answered, but am new to this. I've searched, but haven't found the answer. Possibly due to my not knowing how to concisely phrase this.

Upvotes: 3

Views: 774

Answers (1)

Chris Heald
Chris Heald

Reputation: 62668

You can exempt the new route from the users resource, and replace it with your custom route:

resources :users, except: [:new]
get 'signup', to: 'users#new', as: "new_user"

Resulting in:

    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

Upvotes: 5

Related Questions