Отобразить xml, сгенерированный из файла.xml.builder, в файл.html.erb
Я хочу показать своим пользователям xml, который генерируется для определенного действия.
Учтите, что у меня есть PostController и следующие представления:
/views/posts/show.xml.builder
/views/posts/preview_xml.html.erb
В моем preview_xml
Действие Я хочу иметь возможность анализировать show.xml.builder так же, как если бы он был вызван напрямую и выводить результат в HTML.
Я знаю, с ERB это возможно с:
ERB.new(File.read(path_to_file)).result(bindings)
Но я не нашел рабочий эквивалент для Builder
Кто-нибудь еще сталкивался с этим? Идеи, чтобы решить или обойти?
Спасибо!
1 ответ
Решение
Разобрался, прочитав Rails Template engine:
мой метод preview_xml выглядит следующим образом:
class PostsController < ApplicationController
include :Helpers::TagHelper
def preview_xml
@post = Post.find(params[:id])
xml = ::Builder::XmlMarkup.new(indent: 2)
builder_file = File.read(::Rails.root.to_s + '/app/views/posts/show.xml.builder')
require 'builder'
instance_eval builder_file
@tag_xml = xml.target!
end
end