Phoenix:showing/hiding Html 个元素取决于路线
Phoenix: showing/hiding Html elements depending on the route
如果我们不在主页上,我想显示菜单图标。
我知道我需要使用这样的东西:
<div class="header">
<%= if page_path(@conn) === "/" do %>
# Do nothing
<% else %>
<%= render Myproject.SharedView, "menuButton.html" %>
<% end %>
</div>
但这不起作用,因为 page_path (@conn)
应该根据控制器操作给我们路由:page_path (@conn, :index)
而不是浏览器请求的路由。
所以我的问题是:最简单的函数是什么?
您可以使用 Plug.Conn 中的 request_path
:
<%= if @conn.request_path == "/" do %>
如果要对整个控制器执行此操作,可以使用 Phoenix.Controller.controller_module/1:
if Phoenix.Controller.controller_module(@conn) == MyApp.PageController do
对于您的原始代码,如果您打算什么也不做,请使用 unless
:
<%= unless @conn.request_path == "/" do %>
或者颠倒你的逻辑:
<%= if @conn.request_path != "/" do %>
如果我们不在主页上,我想显示菜单图标。 我知道我需要使用这样的东西:
<div class="header">
<%= if page_path(@conn) === "/" do %>
# Do nothing
<% else %>
<%= render Myproject.SharedView, "menuButton.html" %>
<% end %>
</div>
但这不起作用,因为 page_path (@conn)
应该根据控制器操作给我们路由:page_path (@conn, :index)
而不是浏览器请求的路由。
所以我的问题是:最简单的函数是什么?
您可以使用 Plug.Conn 中的 request_path
:
<%= if @conn.request_path == "/" do %>
如果要对整个控制器执行此操作,可以使用 Phoenix.Controller.controller_module/1:
if Phoenix.Controller.controller_module(@conn) == MyApp.PageController do
对于您的原始代码,如果您打算什么也不做,请使用 unless
:
<%= unless @conn.request_path == "/" do %>
或者颠倒你的逻辑:
<%= if @conn.request_path != "/" do %>