インデックス ページの画像を取得しようとしています。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
同じ問題、タイムアウト。ただし、コンソールでは正常に動作します。私はそれを理解していません。