【发布时间】:2018-04-08 13:51:52
【问题描述】:
我想从 ecto 获得一个数据结构,它允许在我的 HTML 中迭代地编写类似这样的内容:
<%= genders.name %>
所以我想我应该有:
[{name: "Male", id: 1}, {name: "Female", id: 2}]
现在我的控制器运行良好
defmodule HexProjectWeb.LandingController do
use HexProjectWeb, :controller
alias HexProject.Gender
def index(conn, _params) do
genders = HexProject.Repo.all(Gender) |> Enum.map(&{&1.name, &1.id})
conn
|> assign(:genders, genders)
|> render("index.html")
#render conn, "index.html", genders: genders
end
end
但它会返回这样的性别:
[{Male, 1}, {Female, 2}]
我不知道如何展示这个。
所以我尝试了
genders = HexProject.Repo.all(
from g in Gender,
select: %{name: g.name, id: g.id}
)
它返回一个错误
函数 HexProjectWeb.LandingController.init/1 未定义(模块 HexProjectWeb.LandingController 不可用)
编辑:完全错误
edit2: router.ex
defmodule HexProjectWeb.Router do
use HexProjectWeb, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", HexProjectWeb do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
get "/landing", LandingController, :index
resources "/genders", LandingController
end
# Other scopes may use custom stacks.
# scope "/api", HexProjectWeb do
# pipe_through :api
# end
end
感谢您的帮助。
【问题讨论】:
-
您的第二次尝试是正确的。该错误看起来与此更改无关。你能发布完整的错误信息吗?
-
我截图并编辑了我的帖子。这是你问的?
-
您在哪个文件中定义了
HexProjectWeb.LandingController模块?从该错误看来,您在路由器中使用了此模块名称,但 Elixir 找不到该模块。 -
是的,我在 router.ex 中定义了它。帖子已编辑。
标签: elixir phoenix-framework ecto