显示来自 %Mariaex{} 地图的结果

Display Results from %Mariaex{} Map

我不得不使用 Ecto.Adapters.SQL.query!/4 来查询我的数据库。 效果很好,returns 达到了我的预期。

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

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

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


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

<%= 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>
...

根据 README,字段的数据存储在结构的 rows 字段中,列名在 columns 中。要将它们转换为 key/value 对,您可以使用 Enum.zip。这应该有效:

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

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