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