Ответ 1
render
при вызове из представления возвращает строковый рендеринг переданного шаблона или частичного; вы можете вставлять эту строку в свое представление по своему усмотрению. Обратите внимание, что:
- Вам нужно добавить имя вашего шаблона с расширением типа/расширением. Если вы этого не сделаете, Rails может запутаться в том, какой файл шаблона вы вызываете; т.е.: вместо
list.json.jbuilder
он может выбратьlist.html.erb
. Если вы делаете этот вызов сlist.html.erb
, попытка отображенияlist.html.erb
приводит к бесконечной рекурсии и к SystemStackError. Использование параметра:format
дляrender
не работает. - Вы должны указать подходящий путь к шаблону; он не найдет правильный шаблон для "list.json" только потому, что
list.json.jbuilder
находится в том же каталоге, что иlist.html.erb
. - Вам необходимо передать вывод вызова
render
черезraw
; в противном случае он будет экранирован, когда он будет встроен в представление.
Итак, для вашего примера вы можете написать это, считая, что ваши шаблоны находятся в /app/views/foo
:
<div data-list="<%= raw render(:template => "foo/list.json", :locals => { :contents => @contents }) %>"></div>