我在布局中渲染一个共享标题:
<%= 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中,它是由帮助者完成的。
答案 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 %>