访问连接或“分配”#39;从一个视图中

时间:2016-04-20 15:13:10

标签: elixir phoenix-framework

我是凤凰新来的,来自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

任何见解都表示赞赏。

1 个答案:

答案 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进行匹配。我已在上面的代码中修复了此问题。)