显示%Mariaex {}地图

时间:2018-08-16 04:01:31

标签: elixir phoenix-framework ecto

我不得不使用Ecto.Adapters.SQL.query!/ 4来查询我的数据库。 效果很好,并返回了我期望的结果。

当我尝试使用<%= for result <- @results do %>在Phoenix页面上显示结果时,出现此错误

protocol Enumerable not implemented for %Mariaex.Result{...}

所以问题是,如何枚举结果以将它们显示在HTML表中?


Dogbert使我走上了正确的轨道,但最终我还是这样做了,以便可以对每个表单元格进行单独控制(例如,分配类,属性等)。

<%= for row <- @results.rows do %>
<% [field_1, field_2, field_3, field_4, field_5, _, _, _] = row  %>
<tr>
  <td nowrap><%= field_1 %></td>
  <td class="fancy><%= field_2 %></td>
...

1 个答案:

答案 0 :(得分:1)

根据README,字段的数据存储在结构的rows字段中,列名位于columns中。要将它们转换为键/值对,可以使用Enum.zip。这应该起作用:

<%= for row <- @results.rows do %>
  <%= for {column, value} <- Enum.zip(@results.columns, row) do %>
    <%= inspect {column, value} %>
  <% end %>
<% end %>

PS:我将变量重命名为@result