2015-11-06 82 views
2

我試圖傳遞Phoenix EEx共享模板(我重複使用的模板)中的值。到目前爲止,這麼好,但現在我想讓它們中的一些是強制性的,其他的是可選的。例如:Elixir/Phoenix EEx共享模板中的可選值

<a href="<=% @url %>" class="core Item <%= className %>"> 
  • url應該是強制性的 - 這是默認(OK);
  • className應該是可選的 - 我無法做到這一點,因爲如果我在調用模板 (<%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png" %>) 時沒有包含它,則會出現錯誤。 我該怎麼做?

回答

7

使用如果該鍵不存在assigns@class_name(按照慣例變量應該寫在snake_case)將提高。

如果沒有設置assigns中不存在的密鑰,則可以使用assigns[:class_name]

之前Phoenix 0.14.0@company如果未設置則返回nil。又改爲提高,使得任務將是明確的

出於這個原因,你也應該考慮明確地傳遞一個零CLASS_NAME(如this comment推薦)(過隱顯。):

<%= render MyProject.SharedView, "myTemplate.html", url:"logo2.png", class_name: nil %>