我有一个资源在t = 0.1, X = 57.19989
的{{1}}处完全呈现为JSON。
将返回所有localhost:3000/gins.json
。但是,我想要一个仅返回最后4个gins的JSON响应,以便在其他地方使用。在控制器中我也有:
@gins = Gin.order(name: :desc)
以上内容适用于带gins
的index.html.erb视图,但如何获取JSON呢?我已尝试@latestgins = Gin.order("created_at DESC").first(4)
但导航到<%= @latestgins.name %>
,当然会出现路由错误。
我怀疑我是以完全错误的方式攻击它,但只是刚开始使用Rails API。
答案 0 :(得分:0)
您可以在索引方法中添加对格式json的响应:
def index
@gins = Gin.order(name: :desc)
@latestgins = Gin.order("created_at DESC").first(4)
respond_to do |format|
format.html
format.json { render json: @latestgins }
end
end
您的@latestgins
现已在此处提供:localhost:3000/gins.json
如果您想要自定义路线来显示您的数据,只需将其添加到您的路线中:
defaults format: :json do
get 'last4gins', to: "gins#index"
end
最后4个条目的数据位于http://localhost:3000/last4gins.json
,http://localhost:3000/last4gins
,localhost:3000/gins.json
如果您希望保持gins
索引路由清洁,您还可以创建自定义方法并从索引中删除@latestgins
:
# routes
get 'last4gins', to: "gins#last4gins"
#controller
def index
@gins = Gin.order(name: :desc)
end
def last4gins
@latestgins = Gin.order("created_at DESC").first(4)
render json: @latestgins
end
现在/gins.json