【问题标题】:How to integrate Nokogiri in Rails App如何在 Rails 应用程序中集成 Nokogiri
【发布时间】:2013-03-28 17:07:17
【问题描述】:

我正在尝试将 Nokogiri 集成到我在 Rails 3.2 中的应用程序中。我看过 Rails Casts 剧集并尝试创建一个名为 nokogiri_test.rb 的测试文件,然后通过我的 cmd 运行它。它运行良好并从旅游网站获取内容。

我正在构建的应用程序是一个在 Rails 中作为实验的旅游网站。我想从另一个旅游网站获取信息,例如:关于亚洲旅行的一段。

我不明白如何在我的应用中实现 Nokogiri 代码。我需要创建一个控制器,然后在其中编写 nokogiri 代码吗?或者在现有的控制器页面或其他地方编写 nokogiri 代码?然后我还想在我的视图中显示信息(asia.html.erb)。我如何显示它?

我在网上到处搜索,但从未找到解决方案。任何人都可以解释一下吗?我将不胜感激。

【问题讨论】:

    标签: ruby ruby-on-rails-3 screen nokogiri


    【解决方案1】:

    一般惯例是不要将任何业务逻辑放入控制器或视图中。特别是如果涉及任何第三方服务(如外部网站)。可以按照Rails Casts "Screen Scraping"的建议,构建一个rake task,将scraping放到model中。

    【讨论】:

    • 这意味着我需要将信息写入模型,然后从模型的视图中显示?
    • 是的,建立一个模型,在控制器中实例化并在视图中显示这个实例。在这种情况下,缓存通常很有意义。 guides.rubyonrails.org/caching_with_rails.html
    • 那么屏幕报废是如何减少工作的呢?我正在考虑直接从外部网站获取信息而不涉及模型(db)。如果涉及到一个数据库,它就像你创建一个模型并存储自定义信息和显示一样好。
    • 也许我的措辞有点模糊。我不是指 ActiveRecord 模型。相反,我的意思是 ruby​​ 类。
    • 非常感谢。但我确实有一个问题。我现在写了一个 rake 任务。要在我的视图中显示它,我该如何调用?我需要在我创建的页面(asia.html.erb)中显示它,我该怎么做?如果我理解缓慢,请原谅我。
    【解决方案2】:

    我看到这个问题在这里还没有解决。我遇到了同样的问题,经过多次搜索(以及很多头痛),我找到了解决方案:Display data scraped from Nokogiri in Rails?

    所以(不知道一般惯例),可以将 nokogiri 的网络 scraper 放在控制器中! (我也是初学者) 希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 1970-01-01
      相关资源
      最近更新 更多