akireev
akireev

Reputation: 1

How to change the parameter name using resources in Phoenix framework Router without affecting sub resources

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

Answers (1)

ontanj
ontanj

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

Related Questions