Для заголовка страницы, вы можете просто передать значение через от контроллера:
def edit(conn, params) do
render(conn, "edit.html", page_title: "Edit The Thing")
end
<head>
<title><%= assigns[:page_title] || "Default Title" %></title>
</head>
Обратите внимание, что это использует assigns[:page_title]
вместо @page_title
или assigns.page_title
, как они будут ошибки, если ключ :page_title
нет в правопреемников ,
Для включения шаблонов (ваш пример сценария) есть render_existing/3.
документация дает аналогичный пример тому, что вы просили, чтобы я скопировал его здесь для удобства:
Рассмотрим случай, когда расположение приложение позволяет вид динамически визуализировать часть тегов сценария в голове документ. Некоторые представления могут захотеть вставить определенные скрипты, а другие - нет.
<head>
<%= render_existing view_module(@conn), "scripts.html", assigns %>
</head>
Затем модуль для представления @inner может принять решение о предоставлении сценариев либо с скомпилированного шаблона, либо путем реализации функции непосредственно, а именно:
def render("scripts.html", _assigns) do
"<script src="...">"
end
Чтобы использовать предварительно скомпилированный шаблон, создайте файл scripts.html.eex в каталоге шаблонов для соответствующего представления, которое вы хотите отобразить. Например, для UserView создайте файл scripts.html.eex в web/templates/user /.
Amazing! Спасибо за объяснение. Очень помогли понять это. – rockerBOO
Это работает, но что делать, если вы хотите добавить много метаданных для конкретной страницы. Ваши методы управления станут беспорядочными! Плюс контроллеры должны быть для бизнес-логики в любом случае. Я рекомендую использовать ** render_existing/2 ** функцию, как описано [здесь] (http://blog.danielberkompas.com/2016/01/28/seo-tags-in-phoenix.html) –