2014-10-09 72 views
0

我想呈现JSON来打印页面。这是它更新的属性和渲染视图进行打印,这样的方法:如何通过JSON呈现params在视图中?

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 

我不知道这是否是正确的。

+2

这将有助于了解在'@ request'什么样的信息和你所期望的JSON的样子。 – ptd 2014-10-09 15:02:42

回答

0

为什么你在做法authorize @request

Ruby隐式返回方法的最后一行,所以你希望你的方法调用是你做的最后一件事。您能否将授权移至第一个方法调用?

如果确实需要在最后,你可以试试这个:

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 
+0

这是一种行动方法,而不是模型方法 – Fer 2014-10-09 14:05:27

+0

我知道这不是必要的,但我认为这不应该干涉最终结果。 – marcodamaceno 2014-10-09 14:11:52