2016-12-02 2 views
0

Я изучаю эликсир с Phoenix и просто застрял в довольно тупой точке. Я хочу, чтобы вызвать рендер частичное внутри моего шаблона индекса следующим образом:call render частично от просмотра в 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 

я ожидал пройти через рендеринг петли общего/_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», потому что я не думал, что это необходимо (я привык к рельсам, и он работает именно так).

+1

Попробуйте '= for' вместо o f '- для'. – Dogbert

+0

nope. То же самое. – ntonnelier

+0

Вы действительно в курсе? '- for' будет игнорировать вывод html внутри него, что приведет к тому, что« он просто отобразит материал до и после этого ». – Dogbert

ответ

2

Оказалось, что речь идет о правописании. Были две проблемы:

  1. Тонкое расширение не должно быть явным, как объяснил @radubogdan.
  2. Петля должна быть добавлена ​​с использованием = 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. 
Смежные вопросы