协议Phoenix.HTML.Safe没有实现Elixir Phoenix

Jun*_*ooq 4 elixir phoenix-framework

我有一个具有如下值的对象

%{"Friday" => [], "Monday" => [], "Saturday" => [], "Sunday" => ["3:0-4:0", "6:0-7:0"], "Thursday" => [], "Tuesday" => [], "Wednesday" => []}
Run Code Online (Sandbox Code Playgroud)

我想在我的电子邮件模板的视图中显示它,我刚才说

<p>Schedule: <%= @schedule %></p>
Run Code Online (Sandbox Code Playgroud)

我得到了这个错误

** (Protocol.UndefinedError) protocol Phoenix.HTML.Safe not implemented for %{"Friday" => [], "Monday" => [], "Saturday" => [], "Sunday" => ["3:0-4:0", "6:0-7:0"], "Thursday" => [], "Tuesday" => [], "Wednesday" => []}
Run Code Online (Sandbox Code Playgroud)

在HTML中显示它的最佳方式是什么?

Dog*_*ert 13

你无法直接输出这样的地图; 只有实现Phoenix.HTML.Safe协议的东西.如果要打印iex要打印的内容(如果可能,则为Elixir语法),可以显式调用inspect将Map转换为String,然后输出:

<p>Schedule: <%= inspect @schedule %></p>
Run Code Online (Sandbox Code Playgroud)

如果要以不同方式打印,可以使用for:

<p>
  Schedule: 
  <%= for {key, value} <- @schedule do %>
    ...use key and value variables here...
  <% end %>
</p>
Run Code Online (Sandbox Code Playgroud)