Hello everyone!
I was wondering if it’s possible to call/ build routes without using the named path helpers, something like:
Router.Helpers.path(Endpoint, :page, :show, 1234)
Router.Helpers.path(@conn, :page, :show, 1234)
# Instead of:
# Router.Helpers.page_path(Endpoint, :show, 1234)
# Router.Helpers.page_path(@conn, :show, 1234)
PS.: I’m aware that there’s a path
function in the Router.Helpers, but I’m not sure if it’s used for a similar purpose or it’s only internal - I couldn’t find any documentation.
I’m not sure how you’d accomplish your goal right now but wanted to point out that the @moduledoc false
at the top of that module indicates that it is a private api and that you should not directly call it because it may break in patch-level updates to the library: https://hexdocs.pm/elixir/writing-documentation.html#hiding-internal-modules-and-functions
1 Like
You can also use apply
here to call a path function dynamically:
path = :page_path
apply(Router.Helpers, path, [:show, 1234])
4 Likes
@axelson Yes, I’m aware of that. Thanks for the heads up though .
@benwilson512 Nice! I think this will work for me. I guess, having to append the “path” portion is a minor inconvenience, but I think I could do something like this:
path = String.to_existing_atom("#{resource}_path")
apply(Router.Helpers, path, [:show, 1234])
Thanks for the help guys, cheers!