我已经设置了Post模型。我希望有类似的东西:
class Post
...
def self.all
response = AFMotion::HTTP.get("localhost/posts.json")
objects = JSON.parse(response)
results = objects.map{|x| Post.new(x)}
end
end
但是根据文档,AFMotion需要某种块语法,它看起来像是异步javascript回调。我不确定如何使用它。
我希望能够致电
ViewController中的 @posts = Post.all
。这只是一个Rails的梦想吗?谢谢!
答案 0 :(得分:2)
是的,基本语法是异步的,因此您不必在等待网络响应时阻止UI。语法很简单,将所有要加载的代码放在块中。
class Post
...
def self.all
AFMotion::HTTP.get("localhost/posts.json") do |response|
if result.success?
p "You got JSON data"
# feel free to parse this data into an instance var
objects = JSON.parse(response)
@results = objects.map{|x| Post.new(x)}
elsif result.failure?
p result.error.localizedDescription
end
end
end
end
既然你提到了Rails,是的,这是一个不同的逻辑。您需要在异步块内放置要运行的代码(完成时)。如果它经常发生变化,或与模型无关,则将& block传递给yoru方法,并在完成后使用该方法回电。
我希望有所帮助!