Как использовать Jbuilder для сохранения вывода на будущее - PullRequest
0 голосов
/ 28 мая 2020

Я хочу сохранить json в поле базы данных для дальнейшего использования. Как мне go об этом с Jbuilder?

Я хочу использовать шаблон показа элемента, передав объект @item, чтобы сохранить вывод для этого элемента в базе данных для дальнейшего использования.

Я получил результат со следующим кодом:

view_paths = Rails::Application::Configuration.new(Rails.root).paths["app/views"]
av_helper = ActionView::Base.new view_paths
include Rails.application.routes.url_helpers
@job = Job.find(239)
output = av_helper.render(file: '/api/jobs/show.jbuilder', locals: {:@job => @job})

Как я могу визуализировать сохраненный json непосредственно из контроллера?

Добавьте это для кода действия в контроллере

def show
   @job = Job.find(params[:id])    
   render :inline => @job.json_output 
end

1 Ответ

0 голосов
/ 29 мая 2020

render_to_string

Необработанный рендеринг шаблона в строку.

Это похоже на рендеринг, за исключением того, что он не устанавливает response_body, а он должен гарантированно всегда возвращать строку.

Также, если вы делаете это с контроллера, вы можете просто использовать контроллер для его рендеринга:

class JobsController
  def create
    @job = Job.new(item_params) do |job|
      job.my_json_attribute = render_to_string(:show, locals: { :@job => job})
    end
    if @job.save
      redirect_to @job
    else
      render :new
    end
  end
end

Но это кажется довольно сложным и ошибочным способом справиться с чем-то, что можно сделать с помощью кеширования электронных тегов и обратного прокси или даже кеширования низкого уровня . Тем более, что при обновлении элемента вам придется повторять лог c.

...