【发布时间】:2017-07-08 23:05:41
【问题描述】:
我的控制器中有这段代码:
def search(conn, %{"q" => param}) do
locale = conn |> get_session(:locale)
case locale do
"pt" ->
searchEmpresas = Skeleton.Customers.Empresa |> Skeleton.Customers.search_pt(param)
searchLojas = Skeleton.Customers.Loja |> Skeleton.Customers.search_pt(param)
searchEventos = Skeleton.News.Evento |> Skeleton.News.search_pt(param)
"es" ->
searchEmpresas = Skeleton.Customers.Empresa |> Skeleton.Customers.search_es(param)
searchLojas = Skeleton.Customers.Loja |> Skeleton.Customers.search_es(param)
searchEventos = Skeleton.News.Evento |> Skeleton.News.search_es(param)
"fr" ->
searchEmpresas = Skeleton.Customers.Empresa |> Skeleton.Customers.search_fr(param)
searchLojas = Skeleton.Customers.Loja |> Skeleton.Customers.search_fr(param)
searchEventos = Skeleton.News.Evento |> Skeleton.News.search_fr(param)
"de" ->
searchEmpresas = Skeleton.Customers.Empresa |> Skeleton.Customers.search_de(param)
searchLojas = Skeleton.Customers.Loja |> Skeleton.Customers.search_de(param)
searchEventos = Skeleton.News.Evento |> Skeleton.News.search_de(param)
_ ->
searchEmpresas = Skeleton.Customers.Empresa |> Skeleton.Customers.search(param)
searchLojas = Skeleton.Customers.Loja |> Skeleton.Customers.search(param)
searchEventos = Skeleton.News.Evento |> Skeleton.News.search(param)
end
render(conn, "search.html", searchEmpresas: searchEmpresas, searchLojas: searchLojas, searchEventos: searchEventos)
end
代码相同,只是在搜索功能中以_pt/es/de/fr结尾。
有没有办法大大简化这个过程?
有没有办法像我们在 Phoenix 模板中那样使用:
<%= for i <- ["pt", "es", "de", "fr"] do %>
i ->
searchEmpresas = Skeleton.Customers.Empresa |> Skeleton.Customers.search_<%=i%>(param)
searchLojas = Skeleton.Customers.Loja |> Skeleton.Customers.search_<%=i%>(param)
searchEventos = Skeleton.News.Evento |> Skeleton.News.search_<%=i%>(param)
<%end%>
【问题讨论】: