我想让团队在模板中获得价值。 我无法获得团队价值观。 QUERY没关系。 错误消息是打击。
GET / members / new的ArgumentError 在eex模板中指定@teams不可用。 请确保已设置所有正确的分配。如果这 是一个子模板,确保明确给出分配 父模板,因为它们不会自动转发。
有什么不对吗?
member_controller.ex
def new(conn, _params) do
changeset = Member.changeset(%Member{})
teams = Repo.all(Team)
assign(conn, :teams, teams)
render(conn, "new.html", changeset: changeset)
end
form.html.eex
<%= @teams %>
答案 0 :(得分:3)
Elixir是一种不可变的语言。执行assign(conn, :teams, team)
时,conn
本身不会被修改,而是返回一个新的更新版本。
修复将是:
def new(conn, _params) do
changeset = Member.changeset(%Member{})
teams = Repo.all(Team)
conn = assign(conn, :teams, teams)
render(conn, "new.html", changeset: changeset)
end
可以使用管道运算符进一步清理:
def new(conn, _params) do
changeset = Member.changeset(%Member{})
teams = Repo.all(Team)
conn
|> assign(:teams, teams)
|> render("new.html", changeset: changeset)
end
答案 1 :(得分:0)
我认为上面的代码可以修改为
def new(conn, _params) do
changeset = Member.changeset(%Member{})
teams = Repo.all(Team)
render("new.html", changeset: changeset, teams: teams)
end