Rails routes: GET without param :id Rails routes: GET without param :id ruby ruby

Rails routes: GET without param :id


The way to go is to use singular resources:

So, instead of resources use resource:

Sometimes, you have a resource that clients always look up without referencing an ID. For example, you would like /profile to always show the profile of the currently logged in user. In this case, you can use a singular resource to map /profile (rather than /profile/:id) to the show action [...]

So, in your case:

resource :user do  get :me, on: :memberend# => me_api_user GET    /api/users/me(.:format)            api/v1/users#me {:format=>"json"}


Resource routes are designed to work this way. If you want something different, design it yourself, like this.

match 'users/me' => 'users#me', :via => :get

Put it outside of your resources :users block


You can use

resources :users, only: [:index, :update] do  get :me, on: :collectionend

or

resources :users, only: [:index, :update] do  collection do    get :me  endend

"A member route will require an ID, because it acts on a member. A collection route doesn't because it acts on a collection of objects. Preview is an example of a member route, because it acts on (and displays) a single object. Search is an example of a collection route, because it acts on (and displays) a collection of objects." (from here)