Reputation: 1
resources "/rooms", RoomController, only: [:show, :update, :delete], param: "room_id", name: "" do
resources "/users", UserController, except: [:create], param: "user_id"
resources "/notes", NoteController, except: [:delete, :update], param: "note_id"
resources "/messages", MessageController, except: [:delete, :update], param: "message_id"
end
I have those resources. It gives me routes like this: /api/v1/rooms/:_room_id/users/:user_id
How to remove that underscore before "room_id"?
Is separation like this is good solution:
resources "/rooms", RoomController, only: [:show, :update, :delete], param: "room_id"
resources "/rooms", RoomController, only: [] do
resources "/users", UserController, except: [:create], param: "user_id"
resources "/notes", NoteController, except: [:delete, :update], param: "note_id"
resources "/messages", MessageController, except: [:delete, :update], param: "message_id"
end
EDIT:
I want to have :room_id for every resource with room:
DELETE /api/v1/rooms/:room_id/
GET /api/v1/rooms/:room_id/users/:user_id
If I use resources without param, then I'll have:
DELETE /api/v1/rooms/:id/
GET /api/v1/rooms/:room_id/users/:user_id
If I use resources with param ("room_id"):
DELETE /api/v1/rooms/:room_room_id/
GET /api/v1/rooms/:room_id/users/:user_id
Upvotes: 0
Views: 314
Reputation: 1619
The option name: ""
adds the string ""
as a prefix to the parameter together with a separating underscore. If you remove the name: ""
option you should be good.
Here's the documentation https://hexdocs.pm/phoenix/Phoenix.Router.html#resources/4
Upvotes: 0