我正在尝试 Rubymotion,但似乎无法弄清楚如何完成看似简单的任务。
我已经为人员目录设置了 UITableView。我创建了一个返回 json 的 rails 后端。
Person 模型定义了一个 get_people 类方法:
def self.get_people
BubbleWrap::HTTP.get("http://myapp.com/api.json") do |response|
@people = BW::JSON.parse(response.body.to_str)
# p @people prints [{"id"=>10, "name"=>"Sam"}, {etc}] to the console
end
end
在 directory_controller 中,我只想将 @data 的实例变量设置为我的端点返回的数组,以便我可以填充表视图。
我正在尝试@data = Person.get_people
在 viewDidLoad 中执行操作,但收到一条错误消息,指示正在传递 BW 响应对象:undefined method
count' for #BubbleWrap::HTTP::Query:0x8d04650 ...> (NoMethodError)`
因此,如果我在 BW 响应块之后将数组硬编码到 get_people 方法中,一切正常。但是我发现我也无法通过关闭 BW 响应块来保留实例变量。
def self.get_people
BubbleWrap::HTTP.get("http://myapp.com/api.json") do |response|
@people = BW::JSON.parse(response.body.to_str)
end
p @people #prints nil to the console
# hard coding [{"id"=>10, "name"=>"Sam"}, {etc}] here puts my data in the table view correctly
end
我在这里想念什么?如何从bubblewrap 的响应对象中获取这些数据并以可用的形式传递给我的控制器?