2017-10-13 42 views
0

尋找一些幫助Meetup.com API我試圖添加到我的Rails應用程序未初始化常數事件。我的目的是爲了在打開應用程序時瞭解本地聚會。使用RoR的Meetup API。獲取NameError:在軌控制檯

這裏是我到目前爲止的代碼:

的routes.rb(在最後的 '結束' 前底部):

root 'meetup#get_meetup' 

meetup_controller.rb

class MeetupController < ApplicationController 
    def get_meetup 
    if params[:city] && params[:name] 
     @Event = Event.new(params[:city], params[:name]) 
    else 
     @event = Event.new("90034", "networking") 
    end 
    end 
end 

meetup.rb :

class Event 
    attr_reader :city, :nam 
    def initialize(city, name) 

url = "http://api.meetup.com/2/events?key#{ENV["meetup_api_key"]}&group_urlname=Girl-Develop-It-Austin&sign=true.json" 

    response = HTTParty.get(url) 

    @event = response["event"] 

    @city = city 
    @name = name 
    end 
end 

I嘗試使用rails控制檯中的城市和名稱(又名事件類別)的參數創建新的事件搜索。

軌控制檯: Event.new(「奧斯汀」,「網絡」)

,它給我的錯誤NameError:未初始化的常數事件

**我還是新來使用第三方特別是Rails的API,所以我沒有在網上找到太多關於如何正確地讓他們工作的信息。如果有人可以請給我一些洞察,爲什麼這是不正確的......或者如果這是一個偉大的文章/網站來幫助我與這些請讓我知道!複製粘貼後

+0

所以。你不使用ActiveRecord? – xiaocui

+0

我試圖用撬。以及不確定如果這就是你的意思,但是這也沒有給我任何東西。 – DianaBG

回答

0

重新啓動服務器,個人從來沒有試圖利用聚會的API。

控制器

Meetup.new(city, name) 

/config/application.rb

config.eager_load_paths << Rails.root.join('lib') 

/lib/meetup.rb

require 'rest-client' 
require 'net/http' 
require 'json' 

class Meetup 

    attr_reader :city, :name 
    def initialize(city, name) 

    resp = RestClient.get("http://api.meetup.com/2/events?key#{ENV['meetup_api_key']}&group_urlname=Girl-Develop-It-Austin&sign=true.json") 
    #or 
    resp = RestClient.get("http://api.meetup.com/2/events", 
     { key: ENV['meetup_api_key'], 
      group_urlname: "Girl-Develop-It-Austin", 
      sign: true 
     }) 

    @event = JSON.parse(resp, { symbolize_names: true })[:event] 

    @city = city 
    @name = name 
    end 
end 
+0

謝謝你的迴應!只是一個問題,但爲什麼meetup.rb會在lib文件夾中?我已經將它放在模型文件夾中作爲新模型。此外,我現在得到這個錯誤「NameError:未定義的局部變量或方法'meetup'爲主:對象」我認爲另一個問題是我有點不確定什麼來命名事件或聚會。我已將變量更改爲「meetup」以及文件名......但這可能是一個問題。 – DianaBG

+0

我試圖遵循一些準則以及文檔,但很難確切地知道如何使用API​​的初學者。 – DianaBG

+0

也正是我在那裏把該配置行在application.rb。它在更新我的數據庫時給了我一個錯誤。 (config.eager_load_paths << Rails.root.join('lib'))? – DianaBG

0

嘗試移動你的代碼到服務對象

創建app文件夾內的文件夾服務。然後將您的Event類移至服務文件夾。同樣在初始化方法中,一個好的做法是隻初始化變量。解析創建另一個method.And最後,你做了,我已經糾正拼寫錯誤

class Event 
     include HTTParty 
     attr_reader :city, :name ##you have made a spelling mistake 

     def initialize(city, name) 
     @city = city 
     @name = name 
     end 

     def parsing 
     url = "http://api.meetup.com/2/events?key# 
      {ENV["meetup_api_key"]}&group_urlname=Girl-Develop-It- 
      Austin&sign=true.json" 
     response = HTTParty.get(url) 
     @event = response["event"] 
     end 

    end 
0

你需要使用reload!還你上面meetup.rb文件,其中包括

提到重新啓動軌道控制檯
class MeetUp #you need to change class name 
     attr_reader :city, :name 
     def initialize(city, name) 

     url = "http://api.meetup.com/2/events?key#ENV["meetup_api_key"]}&group_urlname=Girl-Develop-It-Austin&sign=true.json" 

     response = HTTParty.get(url) 

     @event = response["event"] 
     @city = city 
     @name = name 
    end 
    end 

如果你的文件名是meetup.rb的類名必須MeetUp沒有Event請更改類的名稱,否則,您可以更改文件名作爲event.rb

不能定義模型或者以不同的名字在班級裏面,我希望我的回答能幫助你。謝謝

+0

謝謝你的評論!我編輯了這個,並且用我的代碼改變了一些其他的問題,並得到了新的錯誤:「NameError:未定義的局部變量或方法'meetup'爲main:Object」。 – DianaBG

+0

如果它是你的ActiveRecord(模型),你需要從應用程序/模型和db/migration目錄中手動刪除先前創建的遷移/模型,之後你可以創建另一個遷移來創建meetup.rb – Asmita