我有这个模板
<%= form_for @changeset, bid_path(@conn, :update, 1), [method: :put], fn f -> %>
<%
require IEx
IEx.pry
%>
<%= if @changeset.action do %>
<div class="alert alert-danger">
<p>Oops, something went wrong! Please check the errors below.</p>
</div>
<% end %>
如何在IEx控制台中显示@changeset?当我试图这样做时会出错:
pry(5)> @changeset
** (ArgumentError) cannot invoke @/1 outside module
(elixir) lib/kernel.ex:3960: Kernel.assert_module_scope/3
(elixir) expanding macro: Kernel.@/1
web/templates/bid/edit.html.eex:5: (file)
答案 0 :(得分:9)
@
模板中的 eex
与Elixir / iex中的@
完全无关。在Phoenix的eex
模板@foo
is roughly equivalent to Access.fetch!(assigns, :foo)
中,在Elixir / iex中,它们用于定义模块属性。因此,为了访问@changeset
中的iex
,您可以执行以下操作:
Access.fetch!(assigns, :changeset)
或者只是以下内容,如果您对不存在的密钥获取nil
没有问题:
assigns[:changeset]