如何通过JSON在视图中渲染参数?

时间:2014-10-09 13:58:57

标签: ruby-on-rails ruby json

我试图渲染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

我不知道它是否正确。

1 个答案:

答案 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
相关问题