0

インデックス ページの画像を取得しようとしています。Nokogiri に各デザインのページに移動してもらい、本文の最初の画像を取得して、部分的に使用する画像を提供してもらいたいです。コンソールでは、これはうまく機能します。私の実際の見解では、タイムアウトします。

_design.html.haml

- doc = Nokogiri::HTML(open("#{design_url(design)}"))
%li.well.blur{style: "background-image: url(#{doc.at_css('.well img')['src']})"}

私がやろうとしていることを見ますか?インデックスでは、標準= render @designsを実行しており、各デザインをループしながら Nokogiri コマンドを実行し、各変数から画像の URL を割り当て、変更し、続行すると考えています。

コンソールで:

doc = Nokogiri::HTML(open("http://localhost:3000/designs/1"))
doc.at_css('.well img')['src']

すぐに戻ります:

=> "http://www.cs.uofs.edu/~olivetoj2/blah.jpg"

明らかに何かが足りない。何か案は?ビューで変数を定義することさえできますか?? 他にどこで宣言できるかわかりません。


アップデート:

ロジックをモデルに移動してみました:

design.rb:

def first_image
  doc = Nokogiri::HTML(open("`http://localhost:3000/designs/1`"))
  doc.at_css('.well img')['src']  
end

テスト目的で URL をハードコーディングし、部分的に次のように変更しました。

%li.well.blur{style: "background-image: url(#{design.first_image})"}

しかし、タイムアウトという同じ問題がありました。


アップデート:

ロジックをモデルに保持し、情報用の列を追加して、デザイン パーシャルから呼び出しをまとめて取り出しました。@design.first_imageここで、create actionとを呼び出しますupdate action

design.rb:

def first_image
  doc = Nokogiri::HTML(open("http://localhost:3000/designs/#{self.id}"))
  self.update_attribute(:photo_url, doc.at_css('.well img')['src'])
end

同じ問題、タイムアウト。ただし、コンソールでは正常に動作します。私はそれを理解していません。

4

1 に答える 1

0

をロードするたびにpartial、使用するパラメータを手動で渡す必要があります。あなたの場合、それは次のようになります:

render :partial => 'designs/design', :locals => { :design => design }
                       |        |                    |         |
                   view folder  |     variable used in partial |
                                |                              |
                          partial name               current name of variable
于 2013-10-01T09:00:46.633 に答える