Render Grape API в строку из представления
У меня есть Grape API, настроенный в приложении Rails 4. Я хочу преобразовать json, созданный одним из вызовов API, в представление во встроенном теге, в частности, чтобы сделать данные JSON доступными для представления angularjs, чтобы избежать вызова (JSON API) сервера после загрузки страницы.
Любые идеи, как получить Grape API для визуализации в строку?
/app/api/api.rb
class API < Grape::API
version 'v1', using: :path
format :json
get '/dashboard' do
...
end
end
просмотры / приборная панель /index.html.erb
<script>
<%= render some-way-to-render-to-text('/api/v1/dashboard.json') %>
</script>
Я мог бы использовать HTTP-запрос get, чтобы получить его, но я надеюсь избежать издержек http-вызова. Я скорее вызываю класс API напрямую.
1 ответ
Ваш файл erb передается в необработанный HTML, прежде чем он будет отправлен клиенту. Ваш вызов API выполняется после этого, поэтому невозможно получить ответ http и обработать его в ruby, потому что к этому моменту весь ruby был переведен в html.
То, что вы хотите сделать, это обработать его под углом. Оттуда вы можете использовать jquery, чтобы вставить его в DOM.
В angular вы бы сделали что-то вроде следующего в сервисе:
$http.get(....).success(//insert into DOM here)