0

我正在尝试在 JRuby 中使用 hpricot。我的问题如下。如果我有这个代码:

 #!ruby
 require 'hpricot'
 require 'open-uri'
 # load the RedHanded home page
 doc = Hpricot(open("http://redhanded.hobix.com/index.html"))

我把它放在哪里?进入我的控制器?因为它在那里不接受它。如果我应该把它放在我的模型中。我怎么能从我的角度来称呼它?

谢谢

尝试wired.com网站时出现此错误

ProductsController#create 中的 Errno::ENOENT

没有这样的文件或目录 - 找不到文件 - www.wired.com

RAILS_ROOT:H:\Documents and Settings/owner/My Documents/NetBeansProjects/RailsApplication5

4

1 回答 1

1

让 Rails 理解并看到 Hpricot 并不是很难。

  1. 安装 Hpricot jruby -S gem install hpricot:.
  2. 在您的 Rails 应用程序中,找到该config/environment.rb文件
  3. 在文件中找到以开头的行config.gem并添加

    config.gem "hpricot", :source => "http://code.whytheluckystiff.net"

  4. 现在,您将能够像在普通 (J)Ruby 代码中一样直接从控制器中使用 Hpricot。我强烈建议不要将任何类型的业务逻辑放入您的视图中,并且只使用最少的条件来保持理智,以保持事情的直接、可读性和可维护性。或者,如果您遵循“瘦控制器、简单视图、胖模型”范式,您可以重构代码并将 Hpricot 调用直接放入模型类中可从视图访问的方法中。

下面是一些代码示例。

示例控制器RAILS_ROOT/app/controllers/example_controller.rb

class ExampleController < ApplicationController
  def index
    @doc = Hpricot(open("http://www.wired.com"))
    # here come some very serious calculations, queries etc.
  end
end

RAILS_ROOT/app/views/example/index.html.erb使用控制器的示例视图:

<pre>
  <%= @doc ? @doc.to_s : "There is no content at the site" %>
  <!-- blablabla -->
</pre>

正如我所提到的,您也许可以将Hpricot(open(...))调用推回模型,但首先尝试这样。如果它有效,请重构:)

于 2009-11-22T22:13:42.927 回答