2009-11-22 32 views
0

我正在嘗試在JRuby中使用hpricot。 我的問題是以下。如果我有這樣的代碼:netbeans中的hpricot

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

我在哪裏放? 進入我的控制器?因爲它不接受它。 如果我應該把它放在我的模型中。我怎麼稱呼它我的看法?

謝謝

嘗試wired.com網站時,它給了我這個錯誤

變量Errno :: ENOENT在 的ProductsController#創建

沒有這樣的文件或目錄 - 文件不 發現 - www.wired.com

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

+0

如果您正在討論控制器,模型和視圖,我是否假設您正在使用JRuby on Rails,並且希望將Hpricot與Rails一起使用? – 2009-11-22 21:45:05

+0

是的,抱歉,我沒有指定 – Lilz 2009-11-22 21:50:15

+0

好吧,答案即將到來;) – 2009-11-22 21:52:58

回答

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. 現在,你就可以直接從使用角度來說,Hpricot控制器與正常(J)Ruby代碼一樣。我強烈建議不要將任何類型的業務邏輯放入您的視圖中,並且爲了保持直觀,可讀和可維護性,只有最低限度的條件才能保持完整。或者,如果您遵循「瘦身控制器,簡單視圖,胖模型」範例,則可以重構代碼並將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(...))回調到模型,但首先試試這樣。如果它正在工作,重構:)

+0

它仍然給我一個「沒有這樣的文件或目錄 - 文件未找到」錯誤:S:S – Lilz 2009-11-22 22:21:42

+0

btw非常感謝:) – Lilz 2009-11-22 22:26:58

+0

是的,該hobix.com網站鏈接不起作用,所以嘗試一些更受歡迎的東西,如www.wired。com的URL。請儘可能使用完整的錯誤消息和堆棧跟蹤來更新您的問題。 – 2009-11-22 22:28:17