Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该如何在Rails中实现Ruby代码?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 我应该如何在Rails中实现Ruby代码?

Ruby on rails 我应该如何在Rails中实现Ruby代码?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一小段ruby代码,它从一个不提供该功能的网站获取新闻。我想在视图中显示结果,但我不确定应该将代码的逻辑存储在何处,即helper、model(或lib) 寻找关于每种方法的优缺点以及哪种选择最符合逻辑的指导 require 'nokogiri' require 'open-uri' require 'json' news = [] domain = "" councilnews = Nokogiri::HTML(open(domain + "")) councilnews.cs

我有一小段ruby代码,它从一个不提供该功能的网站获取新闻。我想在视图中显示结果,但我不确定应该将代码的逻辑存储在何处,即helper、model(或lib)

寻找关于每种方法的优缺点以及哪种选择最符合逻辑的指导

require 'nokogiri'
require 'open-uri'
require 'json'

news = []
domain      = ""
councilnews = Nokogiri::HTML(open(domain + ""))
councilnews.css('p.newsTitle').select do |article| 

    headline = article.text
    link     = domain + article.css('a').attribute('href').to_s
    content  = article.next_element.text 
    newsItem = {headline: headline, link: link, content: content}


    news.push(newsItem.to_json)

end

在我看来,如果您不想永久存储这些获取的数据,只需将这些代码保存为
lib
,由控制器调用,以便视图可以访问其结果

另外,您可以考虑使用它们作为模型使用的“服务”,您可能需要构建一个模型来构造这些数据的结构并将它们存储在数据库中以供进一步使用。


将这些代码放在
/lib
目录的何处并不重要?一个
app/service
目录?都很好,这只是个惯例。真正重要的是应该如何调用这些代码,以及这些代码在您的业务逻辑中扮演什么角色?

感谢您的快速回答。我要对结果做的唯一一件事就是在视图中显示它。@Sheldon好的,让控制器调用它来获取视图的数据。不要让view直接将其称为助手,它不仅仅是一个助手,它与外包进行交互,应该被视为属于控制器级别的额外操作。更重要的是,它更适合测试。