如何通过JSON呈现params在视图中?
问题描述:
我想呈现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
我不知道这是否是正确的。
答
为什么你在做法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
这将有助于了解在'@ request'什么样的信息和你所期望的JSON的样子。 – ptd 2014-10-09 15:02:42