像凤凰城框架中的帮手或者#34; ex"与部分相关联的文件

时间:2016-11-28 15:57:42

标签: elixir phoenix-framework

我在布局中渲染一个共享标题:

<%= render(MyApp.SharedView, "header.html") %>

在标题中我需要计算一些数据来创建字典,它需要相当多的代码。我想我不应该将代码放入&#34; header.html&#34;而应该保留在&#34; .ex&#34;文件,但是哪一个?在每个控制器中放置或插入相同的代码是不明智的。什么是&#34; .ex&#34;与&#34; header.html&#34;?相关联的文件如果它是MyApp.SharedView,我应该如何将我的变量从它传递到&#34; header.html&#34;?

在Rails中,它是由帮助者完成的。

1 个答案:

答案 0 :(得分:1)

  

如果是MyApp.SharedView

是的,它是MyApp.SharedView

  

我应该如何将变量从它传递到“header.html”?

您不会将变量从SharedView传递到header.html.eex,您应该在SharedView中创建一个函数并从header.html.eex调用该函数(就像您调用的一样) Rails中的辅助函数,例如

defmodule MyApp.SharedView do
  ...
  def generate_dictionary(arg) do
    %{a: 1, b: 2}
  end
end

然后,在header.html.eex

<%= for {k, v} <- generate_dictionary(123) do %>
  <%= k %>: <%= v %>
<% end %>