如何使用Jbuilder保存输出以备后用?

问题描述 投票:0回答:1

我想把json保存到一个数据库字段中,以便以后使用。 我应该如何使用Jbuilder来实现?

我想使用一个Item的show模板,通过对象,@item将该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
ruby-on-rails jbuilder
1个回答
0
投票

render_to_string

将模板原始渲染为字符串。

它与render类似,只是它没有设置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

但这似乎是一个非常复杂且有缺陷的方法来处理一些可以用... 电子标签缓存 和反向代理甚至 低级缓存. 特别是当你更新项目时,你将不得不重复这个逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.