2016-12-30 66 views
1

在模板返回零,而不是預期值:Map.get(受讓人:鑰匙)在視圖

<%= @key %> 

模板呈現的@key價值,一切都在這裏很好。

我要在相應的視圖使用@key,但是

Map.get(conn.assigns, :key) 

給我nil。根據該文件

@實際上是轉換@keyMap.get(assigns, :key)

那麼,爲什麼上面的回報nil沒有預期值的宏?

迷惑我還要多,當我在視圖鍵入

conn.assigns.key 

,它給了我所期望的價值。

回答

3

在模板@conn.assignsassigns是兩個不同的東西。 assigns地圖來自EEx,它是啓用@var語法的地方。 conn.assigns來自插件,是不同插頭所需數據的通用存儲空間。 當您撥打Phoenix.Controller.render/3時,您明確通過的分配(作爲最後一個參數)將與conn.assigns合併,並以assigns的形式傳遞給模板,但conn.assigns未使用新值更新。