Ruby on rails 没有这样的文件或目录:在rails控制器中打开uri

Ruby on rails 没有这样的文件或目录:在rails控制器中打开uri,ruby-on-rails,open-uri,Ruby On Rails,Open Uri,我正在尝试在Rails中使用openURI gem的open方法 当我在独立的Ruby应用程序中尝试它时,我只需要将它放在文件的顶部,一切正常。 但现在我想让它在Rails应用程序中使用it控制器。建议在控制器上加上require吗 控制器代码: def search if params.has_key? :q params[:q] =~ /\?v=(.*?)&/ xmlfeed = Nokogiri::XML(open("http://gdata.youtube.c

我正在尝试在Rails中使用openURI gem的open方法

当我在独立的Ruby应用程序中尝试它时,我只需要将它放在文件的顶部,一切正常。 但现在我想让它在Rails应用程序中使用it控制器。建议在控制器上加上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
错误:

没有这样的文件或目录-


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

您应该为此类内容创建一个模型

但直接回答你的问题。当你把它放在控制器的顶部或者在你需要它的动作中,你不会真正感觉到任何不同

也许高强度应用程序在进行基准测试时会注意到这一点,但我还没有看到