我试图渲染JSON来打印页面。它是一种更新属性并渲染要打印的视图的方法,如下所示:
class Admin::RequestsController < Admin::ApplicationController
def print
@request.print = 1
respond_to do |format|
if @request.save
format.json { render json: @request.as_json(only: [:id, :number]) }
end
end
authorize @request
end
end
这样,在点击打印图标后,它会打开一个带有打印选项的新窗口,但它不会列出任何内容。仅[Object object]
。
我试图将print.json.builder
渲染为打印,但它不起作用:
json.(@request, :id, :number)
json.items do |json|
json.(@request.items, :item, :request_product)
end
我不知道它是否正确。
答案 0 :(得分:0)
为什么你在方法结束时做authorize @request
?
Ruby会隐式返回方法的最后一行,因此您希望format.json
方法调用是您做的最后一件事。你能将授权移动到第一个方法调用吗?
如果它确实需要在最后,你可以试试这个:
def print
@request.print = 1
result = nil
respond_to do |format|
if @request.save
result = format.json { render json: @request.as_json(only: [:id, :number]) }
end
end
authorize @request
result
end