1

我想在我的控制器的更新方法中通过 Viralheat 的 API 发送一个请求,以便当用户点击提交按钮时,一个操作完成并进行 API 调用。我想发帖到 http://www.viralheat.com/api/sentiment/review.json?text=i&do¬&like&this&api_key=[ * your api key * ]

这将返回一些 JSON 格式:

{"mood":"negative","prob":0.773171679917001,"text":"i do not like this"}

是否可以在执行控制器方法时同时进行 API 调用,我将如何处理 JSON 响应?我会把它放在哪个控制器方法中?

最终,我想将响应情绪保存到 BrandUsers 表中的情绪列中。提交在 main.html.erb 中,然后使用更新方法。

控制器

def update
  @brand = Brand.find(params[:id])
  current_user.tag(@brand, :with => params[:brand][:tag_list], :on => :tags)
  if @brand.update_attributes(params[:brand])
    redirect_to :root, :notice  => "Brand tagged."
  else
    render :action => 'edit'
  end
end

def main
  @brands = Brand.all
  if current_user
    @brand = current_user.brands.not_tagged_by_user(current_user).order("RANDOM()").first
end
4

1 回答 1

2

安装wrestgem 后,您可以执行类似的操作

params[:api_key] = "your key"

url = "http://www.viralheat.com/api/sentiment/review.json"

response = url.to_uri.get(params).deserialize

response将包含已经变成哈希的 json。所以你可以访问心情

response[:mood]
于 2011-09-02T14:46:54.383 回答