2015-11-24 27 views
0

在學校的一個項目我試圖用Bandsintown api來顯示用戶在我的網站上關注的藝術家即將舉行的音樂會。我能夠以我想要的方式使用api,但是在生產中我的heroku站點沒有顯示,也沒有收到任何錯誤,實際上我只是收到一個空數組。也許你需要Bandsintown的許可才能在heroku上使用他們的api?我試過聯繫他們,但還沒有聽到答覆。麻煩在軌道應用上使用api上的heroku

我的問題,爲什麼我能夠從Bandsintown獲得關於開發但不是生產的響應?新於一般的web開發,所以我還沒有碰到過這之前來..

這裏是我的代碼:

calendar_controller.rb

class CalendarController < ApplicationController 
    require 'uri' 

    def index 
    @user = current_user 
    @hash_version_array = [] 

    @user.follows.each do |follow| 
     response = HTTParty.get("http://api.bandsintown.com/artists/#{URI.escape(follow.artist_name)}/events/search.json?api_version=2.0&app_id=#{app_id}&location=use_geoip") 
     @hash_version = JSON.parse(response.body) 

     @hash_version_array << @hash_version if @hash_version != [] 
    end 

    @hash_version_array 
    end 
end 

日曆/ index.html.erb

在開發工作時從Bandsintown
<h1><%= @user.name %>'s Calendar</h1> 
<div> 
    <h4 class="inline"><%= link_to "Calendar" %></h4> 
    <h4 class="inline"><%= link_to "List" %></h4> 
    <h4 class="inline"><%= link_to "Map" %></h4> 
</div> 
<br> 

<% @hash_version_array.each do |date| %> 
    <h3 class="artist_name"><%= date[0]["formatted_datetime"] %></h3> 
    <% date[0]["artists"].each do |info| %> 
    <h1 class="artist_name"><%= info["name"] %></h1> 
    <br> 
    <%= image_tag("#{info['thumb_url']}", class: 'artist_img') %> 
    <% end %> 

    <br> 
    <br> 

    <%= date[0]["venue"]["name"] %> 
    <br> 
    <%= date[0]["formatted_location"] %>, <%= date[0]["venue"]["country"] %> 
    <br> 
    Tickets <%= date[0]["ticket_status"].titleize %> <%= link_to("Buy", "#{date[0]['ticket_url']}") %> 
    <br> 
    <hr class="artists_hr"> 
<% end %> 

響應:

From: /Users/jasonquaccia/Sites/code/projects/capstone/the-music-project/app/controllers/calendar_controller.rb @ line 15 CalendarController#index: 

    4: def index 
    5: @user = current_user 
    6: @hash_version_array = [] 
    7: 
    8: @user.follows.each do |follow| 
    9:  response = HTTParty.get("http://api.bandsintown.com/artists/#{URI.escape(follow.artist_name)}/events/search.json?api_version=2.0&app_id=el_proyecto_de_la_musica&location=use_geoip") 
    10:  @hash_version = JSON.parse(response.body) 
    11: 
    12:  @hash_version_array << @hash_version if @hash_version != [] 
    13: end 
    14: 
=> 15: binding.pry 
    16: @hash_version_array 
    17: end 

[1] pry(#<CalendarController>)> @hash_version_array 
=> [[{"id"=>10847723, 
    "title"=>"Metallica @ AT & T Park in San Francisco, CA", 
    "datetime"=>"2016-02-06T19:00:00", 
    "formatted_datetime"=>"Saturday, February 6, 2016 at 7:00PM", 
    "formatted_location"=>"San Francisco, CA", 
    "ticket_url"=>"http://www.bandsintown.com/event/10847723/buy_tickets?app_id=el_proyecto_de_la_musica&artist=Metallica&came_from=67", 
    "ticket_type"=>"Tickets", 
    "ticket_status"=>"available", 
    "on_sale_datetime"=>"2015-11-06T10:00:00", 
    "facebook_rsvp_url"=>"http://www.bandsintown.com/event/10847723?app_id=el_proyecto_de_la_musica&artist=Metallica&came_from=67", 
    "description"=>"CBS RADIO&#39;s The Night Before with Metallica and Cage the Elephant", 
    "artists"=> 
    [{"name"=>"Metallica", 
     "mbid"=>"65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab", 
     "image_url"=>"https://s3.amazonaws.com/bit-photos/large/4304043.jpeg", 
     "thumb_url"=>"https://s3.amazonaws.com/bit-photos/thumb/4304043.jpeg", 
     "facebook_tour_dates_url"=>"http://www.bandsintown.com/Metallica/facebookapp?came_from=67", 
     "facebook_page_url"=>nil, 
     "tracker_count"=>2341049, 
     "url"=>"Metallica", 
     "website"=>"http://metallica.com"}], 
    "venue"=>{"name"=>"AT & T Park", "city"=>"San Francisco",  "region"=>"CA", "country"=>"United States", "latitude"=>37.7784059, "longitude"=>-122.3894401}}]] 
+1

pry的輸出是生產嗎?因爲它不是空的,如果這可能是部署問題,我們需要更多的細節,如果是這樣的話(這不是API問題,因爲它對我沒有任何問題) – matanco

+0

道歉,我的意思是把開發不生產的撬輸出。做了一個編輯。我還能弄清楚問題所在,請參閱答案.. – jlquaccia

回答

0

找到了原因,我沒有得到任何東西,而在生產在Heroku上,對這種符合location=use_geoip做:

response = HTTParty.get("http://api.bandsintown.com/artists/#{URI.escape(follow.artist_name)}/events/search.json?api_version=2.0&app_id=#{app_id}&location=use_geoip") 

這本地工作,因爲它可以參考我的位置,然後搜索Bandsintown正確的信息。然而,在Heroku上,它不知道如何正確引用一個位置。因此我沒有收到任何結果。