我是凤凰新来的,来自RoR。看起来这些视图类似于Rails助手以及放置辅助函数的可能位置。
如果是这样,我们如何在视图中访问连接或连接?
这是我的榜样问题。
该应用会显示所有用户的列表。但我只想为当前登录的用户显示API令牌。所以我认为UserView
中的方法适合在模板中执行类似的操作:
<b><%= first_name(@user) %></b> (api_token: <%= display_token(@user) %>)
对于视图中的辅助方法,我需要能够做到这样的事情:
def display_token(user) do
case conn.assigns.current_user do
user -> user.api_token
nil -> ""
_ -> "hidden"
end
end
任何见解都表示赞赏。
答案 0 :(得分:7)
Phoenix中没有自动传递给视图中的函数。您必须将@conn
作为参数传递给display_token
。
模板:
<b><%= first_name(@user) %></b> (api_token: <%= display_token(@conn, @user) %>)
查看:
def display_token(conn, user) do
case conn.assigns.current_user do
^user -> user.api_token
nil -> ""
_ -> "hidden"
end
end
(您还需要使用pin运算符将current_user
与作为参数传递的user
进行匹配。我已在上面的代码中修复了此问题。)