我正在和菲尼克斯学习Elixir,并且陷入了一个非常愚蠢的境界。我想通过以下方式从索引模板中调用部分渲染:
#index.html.slim
- for element_here <- array_here do
= render MyApp.SharedView, "_game.html.slim", element: element_here
为此,我创建了一个名为shared_view.ex的视图,如下所示:
defmodule MyApp.SharedView do
use MyApp.Web, :view
def render("game", _assigns), do: "/shared/_game.html.slim"
end
我期望它通过循环渲染shared / _game.html.slim,我在这里复制:
.col-md-4.portfolio-item
a href="#"
img.img-responsive alt="" src="http://placehold.it/700x400" /
h3
a href="#" Project Name
p Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra euismod odio, gravida pellentesque urna varius vitae.
但是没有任何东西被渲染出来。而且我也没有收到任何错误。它只是渲染之前和之后的东西。
我不确定我在这里缺少什么。没有路由或控制器操作连接到“_game”部分,因为我认为它不是必要的(我习惯使用rails并且它在那里工作)。
答案 0 :(得分:4)
原来是一个拼写问题。有两个问题:
= for
而不是- for
添加,正如@Dogbert所说。最后它看起来像这样:
index.html.slim
= for element_here <- array_here do
= render MyApp.SharedView, "_game.html", element: element_here
shared_view.ex
defmodule MyApp.SharedView do
use MyApp.Web, :view
def render("game", _assigns), do: "/shared/_game.html.slim"
end
_game.html.slim
.col-md-4.portfolio-item
a href="#"
img.img-responsive alt="" src="http://placehold.it/700x400" /
h3
a href="#" Project Name
p Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam viverra euismod odio, gravida pellentesque urna varius vitae.