凤凰 |重定向到 html 中的当前路径
Phoenix | redirect to current path in html
在我的页眉 app.html.eex
我有这个 link:
<a href="<%= Routes.page_path(@conn, :index, locale: "en") %>"><%= gettext "English" %></a>
如果用户在根 /
以外的任何其他路径上,用户将被重定向到根路径,显然是因为我用 ... Routes.page_path(@conn, :index ...
将他们发送到那里。
那么我怎样才能形成一个 link 将用户发送到他所在的页面 但是 和参数 locale: "en"
因为我在浏览器插件中处理这个参数并将其设置为语言 cookie,然后 return 用户到用户所在的页面。
像这样:
<%= Routes.go(@conn.current_path, locale:"en")
我知道实现此目的的唯一方法是您自己编写查询字符串(而不是传递更好的地图)。它看起来像这样:
<a href="<%= Routes.path(@conn, "#{@conn.request_path}?locale=en") %>"><%= gettext "English" %></a>
此 link 会将您带到同一页面,但您将只有 locale=en
查询参数(任何其他参数都将消失)。也就是说,您的 @conn.query_params
.
将只有 %{"locale" => "en"}
如果您想自己进一步调查,您应该尝试了解路由器助手的源代码。它住在 $PROJECT/deps/phoenix/lib/phoenix/router/helpers.ex
。我发现这段代码很难理解。 unquote
魔法对我来说是新的。
在我的页眉 app.html.eex
我有这个 link:
<a href="<%= Routes.page_path(@conn, :index, locale: "en") %>"><%= gettext "English" %></a>
如果用户在根 /
以外的任何其他路径上,用户将被重定向到根路径,显然是因为我用 ... Routes.page_path(@conn, :index ...
将他们发送到那里。
那么我怎样才能形成一个 link 将用户发送到他所在的页面 但是 和参数 locale: "en"
因为我在浏览器插件中处理这个参数并将其设置为语言 cookie,然后 return 用户到用户所在的页面。
像这样:
<%= Routes.go(@conn.current_path, locale:"en")
我知道实现此目的的唯一方法是您自己编写查询字符串(而不是传递更好的地图)。它看起来像这样:
<a href="<%= Routes.path(@conn, "#{@conn.request_path}?locale=en") %>"><%= gettext "English" %></a>
此 link 会将您带到同一页面,但您将只有 locale=en
查询参数(任何其他参数都将消失)。也就是说,您的 @conn.query_params
.
%{"locale" => "en"}
如果您想自己进一步调查,您应该尝试了解路由器助手的源代码。它住在 $PROJECT/deps/phoenix/lib/phoenix/router/helpers.ex
。我发现这段代码很难理解。 unquote
魔法对我来说是新的。