首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >凤凰:在视图中没有检索到值

凤凰:在视图中没有检索到值
EN

Stack Overflow用户
提问于 2017-07-03 10:16:30
回答 2查看 416关注 0票数 1

我想在模板中得到团队的价值。我不能得到团队的价值观。查询没问题。错误信息被破坏了。

获取/成员/新分配的ArgumentError @teams在eex模板中不可用。请确保所有适当的分配都已设置好。如果这是子模板,请确保父模板显式地分配赋值,因为它们不会自动转发。

出什么事了吗?

member_controller.ex

代码语言:javascript
复制
  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

代码语言:javascript
复制
<%= @teams %>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-03 10:22:06

灵丹妙药是一种不变的语言。当您执行assign(conn, :teams, team)时,conn本身不会被修改,而是返回一个新的更新的。解决办法是:

代码语言:javascript
复制
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

这可以通过使用管道操作员来进一步清理:

代码语言:javascript
复制
def new(conn, _params) do
  changeset = Member.changeset(%Member{})
  teams = Repo.all(Team)
  conn
  |> assign(:teams, teams)
  |> render("new.html", changeset: changeset)
end
票数 3
EN

Stack Overflow用户

发布于 2017-07-04 07:32:55

我认为上面的代码可以修改为

代码语言:javascript
复制
def new(conn, _params) do
  changeset = Member.changeset(%Member{})
  teams = Repo.all(Team)
  render("new.html", changeset: changeset, teams: teams)
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44883059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档