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 Web サイトを試すときに表示されます

Errno::ENOENT in ProductsController#create

そのようなファイルまたはディレクトリはありません - ファイルが見つかりません - 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 に答える