win*_*yer 1 elixir phoenix-framework
我写了一个full_name(user)辅助函数,想在模板中使用它。
我尝试<%= full_name(@current_user) %>在模板中使用但出现undefined function full_name错误。如何在模板中使用此功能?
网络/视图/user_helpers.ex
defmodule MyApp.UserHelpers do
alias MyApp.User
def full_name(%User{first_name: first_name,
last_name: last_name,
honorific_prefix: honorific_prefix,
honorific_suffix: honorific_suffix}) do
[honorific_prefix, first_name, last_name, honorific_suffix]
|> Enum.reject(&(&1 == ""))
|> Enum.join(" ")
end
end
Run Code Online (Sandbox Code Playgroud)
helper 并没有什么特别之处,它们只是包含函数的模块。您需要使用函数的全名(包括模块名称):
<%= MyApp.UserHelpers.full_name(@current_user) %>
Run Code Online (Sandbox Code Playgroud)
或者将其导入到视图中(由于模板编译到视图中,该函数将在模板范围内可用):
MyApp.UserView do
use MyApp.Web, :view
import MyApp.UserHelpers
...
end
Run Code Online (Sandbox Code Playgroud)
然后你可以使用:
<%= full_name(@current_user) %>
Run Code Online (Sandbox Code Playgroud)