0

我正在尝试在 Rails 中使用 open-uri gem 的 open 方法。

当我在独立的 Ruby 应用程序中尝试它时,我只需要在文件顶部使用它,一切正常。但现在我希望它在 Rails 应用程序中使用它的控制器。将 require 放在控制器之上是否可取?

控制器代码:

def search
  if params.has_key? :q
    params[:q] =~ /\?v=(.*?)&/
    xmlfeed = Nokogiri::XML(open("http://gdata.youtube.com/feeds/api/videos?q=#{$1}"))
    if xmlfeed.at_xpath("//openSearch:totalResults").content.to_i == 1
      flash[:notification] = "Video #{xmlfeed} found"
      #save video id to database
      redirect_to root_url
    else
      flash[:error] = "Video #{xmlfeed} not found"
      redirect_to root_url
    end
  else
    flash[:error] = "You didn't insert video URL."
    redirect_to root_url
  end
end

错误:

没有这样的文件或目录 - http://gdata.youtube.com/feeds/api/videos?q=cSnkWzZ7ZAA

4

2 回答 2

1

你应该为这种东西做一个模型。

但是直接回答你的问题。将它放在控制器顶部或在您需要它的操作中时,您不会真正感受到任何区别。

也许高强度应用程序在基准测试时可能会注意到它,但我还没有看到它。

于 2012-09-26T15:14:47.863 回答
1

我认为更好的做法是创建一个用于获取 youtube 提要的模型,并将所有获取视频并解析结果的代码放在那里 - 控制器应该尽可能薄。

于 2012-09-13T08:34:21.743 回答