method
resource
resource(*resources, &block)public
Sometimes, you have a resource that clients always look up without referencing an ID. A common example, /profile always shows 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:
resource :profile
This creates six different routes in your application, all mapping to the Profiles controller (note that the controller is named after the plural):
GET /profile/new GET /profile GET /profile/edit PATCH/PUT /profile DELETE /profile POST /profile
If you want instances of a model to work with this resource via record identification (e.g. in form_with or redirect_to), you will need to call resolve[rdoc-ref:CustomUrls#resolve]:
resource :profile resolve('Profile') { [:profile] } # Enables this to work with singular routes: form_with(model: @profile) {}
Options
Takes same options as resources[rdoc-ref:#resources]