从视图中访问连接或"分配"

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)

任何见解都表示赞赏.

Dog*_*ert 7

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_useruser传递作为参数.我已经固定在上面的代码.)