Keeping the same path helpers when turning a view into a LiveView

You’ve been given the go-ahead to turn one of your existing views into a LiveView.

So you build a new UserView to be mounted on the "/users/:id" path.

There’s only one problem: routing to a live view with live/4 gives you a different path helper. 😱

# Original Path
resources "users", UserController, only: [:show]
# => user_path(conn, :show, user)

# New Path
live "/users/:id", UserLive
# => live_path(conn, UserLive, user)

What about the rest of your codebase that already uses user_path(conn, :show, user)? Do you have to change all those to live_path(conn, UserView, user)?

No. Thankfully, you don’t have to. It just takes some finagling with the options.

1) Use the as option to change the prefix from live_ to user_

live "/users/:id", UserLive, as: :user
# => user_path(conn, UserLive, user)

2) Give it the :show action to replace UserLive

live "/users/:id", UserLive, :show, as: :user
# => user_path(conn, :show, user)

Voilà! Celebrate all the changes you don’t have to make. 🎉

Want my latest thoughts, posts, and projects in your inbox?

    I will never send you spam. Unsubscribe any time.