Отобразить 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
Другие вопросы по тегам