【发布时间】:2017-07-10 18:48:45
【问题描述】:
在 Phoenix 框架中,有一种基于路由/路径设置页面标题的常用技术。或者这只是在我的路由函数内的正确位置调用assign(:page_title, "fred") 的问题?
更新
我最终实现了@michalmuskala 解决方案的变体。我传递了动作名称而不是@view_template:
<title><%= @view_module.title(action_name(@conn), assigns) %></title>
那么在视图模块中代码如下所示:
def title(:show, assigns), do: assigns.user.name <> " (@" <> assigns.user.user_name <> ")"
def title(:edit, _assigns), do: "Edit Profile"
def title(_action, _assigns), do: "User related page"
上面代码中的最后一条语句是模块的可选“catch all”(我可能只会在转换时这样做)
【问题讨论】:
-
我通常只是将
title: "The Title"传递给每个控制器操作的render调用。如果页面标题基于应用于控制器名称和/或操作名称的某些逻辑,则可以使用插件。