如何正确传递此参数?

时间:2011-09-15 12:51:39

标签: ruby-on-rails ruby-on-rails-3

我想使用 text param创建一个API请求,其中包含params[:brand][:tag_list]中当前包含的信息,该信息似乎保存为单个逗号分隔的字符串。提出API请求的正确方法是什么?

控制器代码

current_user.tag(@brand, :with => params[:brand][:tag_list], :on => :tags)

url = "http://www.viralheat.com/api/sentiment/review.json"
@sentiment_response = url.to_uri.get(
  :api_key => 'MY_KEY',
  :text => :tag_list ).deserialize #This is what I'm currently using and is wrong

日志中的响应代码

<- (GET 49996946161 2204098100) http://www.viralheat.com:80/api/sentiment/review.json?api_key=MY_KEY&text=tag_list
-> (GET 49996946161 2204098100) 200 OK (62 bytes 3.09s)

1 个答案:

答案 0 :(得分:1)

查看viralheat的文档,看起来他们的api只接受两个参数:api_keytext。假设params[:brand][:tag_list]以逗号分隔的字符串,您可以像这样形成您的请求:

current_user.tag(@brand, :with => params[:brand][:tag_list], :on => :tags)

url = "http://www.viralheat.com/api/sentiment/review.json"
@sentiment_response = url.to_uri.get(
  :api_key => 'MY_KEY',
  :text => params[:brand][:tag_list].split(',').join('&') ).deserialize

这应该创建网址:

http://www.viralheat.com/api/sentiment/review.json?api_key=MY_KEY&text=cat%26dog%26​mouse

params[:brand][:tag_list].split(',')将你的字符串分成一个数组,join('&')将它变回一个字符串,但这一次用&符号分隔(这似乎是你想要的,基于你在a评论你原来的帖子)。你的uri.get方法应该逃避uri中的&符号,这就是你在最终网址中看到%26的原因。这是正确的。