如何在render函数中动态更改模块名称

时间:2016-09-28 16:02:00

标签: elixir phoenix-framework

我希望能够在模板中的render函数中动态选择模块名称。所以我尝试了这个但是我遇到了错误:

<%= render if i.compType == "mod" do MyProj.ModuleView else MyProj.ComponentView end, i.compName %>

最终结果将是:

<%= render MyProj.ModuleView, "module.html" %>

<%= render MyProj.ComponentView, "component.html" %>

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

你只是缺少一对括号:

<%= render (if i.compType == "mod" do MyProj.ModuleView else MyProj.Component end), i.compName %>

更惯用的方法是使用不带end的表单:

<%= render if(i.compType == "mod", do: MyProj.ModuleView, else: MyProj.Component), i.compName %>