在我的 Rails 应用程序中
地点有_很多啤酒
啤酒belong_to location
当 iOS 应用程序调用时,locations/%@/beers.json
我希望啤酒控制器响应仅属于从我的 iOS 应用程序调用的 location_id 的啤酒。
这是用户点击位置 1 时客户端发送的请求。
Started GET "/locations/1/beers.json" for 127.0.0.1 at 2013-03-09 11:26:16 -0700
Processing by BeersController#index as JSON
Parameters: {"location_id"=>"1"}
Beer Load (0.1ms) SELECT "beers".* FROM "beers"
Completed 200 OK in 12ms (Views: 1.8ms | ActiveRecord: 0.4ms)
这是我的啤酒控制器代码
class BeersController < ApplicationController
def index
@beers = Beer.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @beers }
end
end
现在,这会将所有啤酒的列表返回给客户端,而不管它们的 location_id 是什么。
到目前为止我已经尝试过
class BeersController < ApplicationController
def index
@beers = Beer.find(params[:location_id])
respond_to do |format|
format.html # index.html.erb
format.json { render json: @beers }
end
end
但是,即使我得到状态 200,iOS 应用程序也会崩溃
Started GET "/locations/1/beers.json" for 127.0.0.1 at 2013-03-09 11:19:35 -0700
Processing by BeersController#index as JSON
Parameters: {"location_id"=>"1"}
Beer Load (0.1ms) SELECT "beers".* FROM "beers" WHERE "beers"."id" = ? LIMIT 1 [["id", "1"]]
Completed 200 OK in 2ms (Views: 0.6ms | ActiveRecord: 0.1ms)
在上面的请求中不应该是
Beer Load (0.1ms) SELECT "beers".* FROM "beers" WHERE "beers"."location_id" = ? LIMIT 1 [["location_id", "1"]
]
如何更改我的控制器,使其响应仅属于客户端发送的 location_id 的啤酒?