显示来自 %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
。
我不得不使用 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
。