Mid*_*ire 2 elixir phoenix-framework
我是凤凰新来的,来自RoR.看起来这些视图类似于Rails助手以及放置辅助函数的可能位置.
如果是这样,我们如何从视图中访问连接或连接的分配?
这是我的示例问题.
该应用程序显示所有用户的列表.但是我只想为当前登录的用户显示API令牌.所以我在想一个UserView适合在模板中做这样的事情的方法:
<b><%= first_name(@user) %></b> (api_token: <%= display_token(@user) %>)
Run Code Online (Sandbox Code Playgroud)
对于视图中的辅助方法,我需要能够执行以下操作:
def display_token(user) do
case conn.assigns.current_user do
user -> user.api_token
nil -> ""
_ -> "hidden"
end
end
Run Code Online (Sandbox Code Playgroud)
任何见解都表示赞赏.
Phoenix中没有自动传递给视图中的函数.你必须把@conn自己作为一个参数传递给你display_token.
模板:
<b><%= first_name(@user) %></b> (api_token: <%= display_token(@conn, @user) %>)
Run Code Online (Sandbox Code Playgroud)
视图:
def display_token(conn, user) do
case conn.assigns.current_user do
^user -> user.api_token
nil -> ""
_ -> "hidden"
end
end
Run Code Online (Sandbox Code Playgroud)
(您还需要使用针运算符来匹配current_user对user传递作为参数.我已经固定在上面的代码.)