0

寻找有关 Meetup.com API 的帮助,我正在尝试添加到我的 Rails 应用程序中。我的目的只是在您打开应用程序时查看本地聚会。

到目前为止,这是我的代码:

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

聚会.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

我尝试使用 rails 控制台中的城市和名称(也称为事件类别)的参数创建一个新的事件搜索。

rails 控制台:Event.new("Austin", "networking")

它给了我错误 NameError: uninitialized constant Event

**我对使用第三方 API 尤其是 Rails 还是很陌生,所以我在网上没有找到太多关于如何正确让它们工作的信息。如果有人可以让我了解一下为什么这是不正确的......或者如果有一篇很棒的文章/网站可以帮助我解决这些问题,请告诉我!

4

3 回答 3

0

您还需要使用reload!上面提到的 meetup.rb 文件重新启动您的 Rails 控制台,其中包括

  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

如果您的文件名是 meet_up.rb 类名MeetUp不能Event请更改您的类名,否则您可以将文件名更改为 event.rb

您不能将模型或内部类定义为不同的名称,希望我的回答对您有所帮助。谢谢

类名应该是file_name_except_extension.classify. 因此它将是'meet_up'.classifyieMeetUp而不是Event

于 2017-10-13T05:39:20.870 回答
0

尝试将您的代码移动到服务对象中

在 app 文件夹中创建文件夹 services。然后将您的事件类移动到服务文件夹。同样在初始化方法中,一个好的做法是只初始化变量。用于解析创建另一种方法。最后,您犯了一个拼写错误,我已更正

 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
于 2017-10-13T05:15:17.870 回答
0

复制粘贴后重启服务器,个人没试过用meetup 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
于 2017-10-13T05:12:22.947 回答