根据几个人的建议,我被告知要让控制器尽可能简洁。目前我在我的控制器中有这个:
class SearchesController < ApplicationController
def index
raw_result = params[:search] ||= "man on fire"
result = raw_result.gsub(/\s+/, "+")
movie_details = HTTParty.get("http://imdbapi.org/?title="+result+"&type=json")
@searches = ActiveSupport::JSON.decode(movie_details)
end
end
如何在模型中将其转换为新类并在控制器中再次回调它?
当前型号和控制器:
class IMDBSearcher
def self.search(search)
raw_result = search || "man on fire"
result = raw_result.gsub(/\s+/, "+")
movie_details = HTTParty.get("http://imdbapi.org/?title="+result+"&type=json")
ActiveSupport::JSON.decode(movie_details)
end
end
class SearchesController < ApplicationController
def index
@searches = IMDBSearcher.search(params[:search])
end
end
答案 0 :(得分:1)
如果是实例方法,你可以这样称呼它:
instance.search(something)
如果是类方法,则将其称为:
IMDBSearcher.search(something)
但是,要做到这一点,你必须像这样创建你的方法:
def self.search(raw_result)
这里的技巧是使用self
关键字,在类方法中转换方法(因为self在这里是IMDBSearcher类)。例如:
def self.search(search)
raw_result = search || "man on fire"
result = raw_result.gsub(/\s+/, "+")
movie_details = HTTParty.get("http://imdbapi.org/?title="+result+"&type=json")
ActiveSupport::JSON.decode(movie_details)
end
在控制器中,您可以执行以下操作:
@searches = IMDBSearcher.search(params[:search])