Routes are compiled so I don’t think something like Rails’ regex-based constraints could ever be possible. I also don’t see a big difference between params: %{country: country} and your live action approach.
I agree with @thiagomajesk that having sub routes is the way to go, but if you really don’t want to, I would make live components for each stat type and delegate in the router:
def render(%{param: param} = assigns) when param in @countries do
~H"""
<.live_component id="countries" module={MyAppWeb.CountryStatsComponent} countries={@countries} />
"""
end
def render(assigns) do
~H"""
<.live_component id="range" module={MyAppWeb.RangeStatsComponent} ranges={@ranges} />
"""
end
That’s just a high-level example and I’m leaving out some context—there are several ways you could accomplish this.


















