控制器中未定义的方法

时间:2016-03-28 13:23:38

标签: ruby-on-rails ruby ruby-on-rails-4

尝试在控制器中调用方法时出错。以下有关如何使其工作的教程,但只是有点陷入困境并需要一些帮助。

NoMethodError in CatalogController#index
undefined method `art' for #<Class:0x007fbe8c338310>

我的模特

require 'httparty'
require 'json'

class Feed < ActiveRecord::Base
  include HTTParty
  base_uri 'https://www.parsehub.com/api/v2/runs'
  # GET /feeds
  # GET /feeds.json
  def art
    response = self.class.get("/tnZ4F47Do9a7QeDnI6_8EKea/data?&format=json")
    @elements = response.parsed_response["image"]
    @parsed = @elements.collect { |e| e['url'] }
  end

end

我的控制器

class CatalogController < ApplicationController


    def index
      @images = Feed.art
    end


end

我猜它是一件相当简单的事我忘记了。

1 个答案:

答案 0 :(得分:2)

def art定义实例方法,而不是类方法。

您有两种方法可以解决此问题:

1)通过将self.添加到定义:

,使方法成为类方法
def self.art
  # ...

2)或者在调用Feed之前在控制器中创建art实例:

def index
  @images = Feed.new.art
end