Ruby on rails Nokogiri从局部图像抓取图像?

Ruby on rails Nokogiri从局部图像抓取图像?,ruby-on-rails,ruby,ruby-on-rails-3,nokogiri,Ruby On Rails,Ruby,Ruby On Rails 3,Nokogiri,我正在尝试为索引页获取图像。我想让Nokogiri进入每个设计的页面,抓取正文中的第一张图片,并将这些图片提供给我,供我在部分设计中使用。在控制台中,这非常有效。在我的实际观点中,它超时了 _design.html.haml - doc = Nokogiri::HTML(open("#{design_url(design)}")) %li.well.blur{style: "background-image: url(#{doc.at_css('.well img')['src']})"} 看

我正在尝试为索引页获取图像。我想让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
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
出于测试目的对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/1`"))
  doc.at_css('.well img')['src']  
end
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

同样的问题,超时。不过,它在控制台中运行良好。我就是不明白。

无论何时加载
部分
,都必须手动传递使用的参数。在您的情况下,它将类似于:

render :partial => 'designs/design', :locals => { :design => design }
                       |        |                    |         |
                   view folder  |     variable used in partial |
                                |                              |
                          partial name               current name of variable

您如何将
design
变量传递给您的partial?这一点依赖rails的魔力。控制器是
designs\u Controller.rb
,模型是
design.rb
,所以我在
views/designs
中有
\u design.html.haml
部分。把它传递给控制器是个好主意,你能在你的新部分中使用设计变量吗?更新。。。仍然有问题我想这比我能更好地解释这条捷径。我的问题不是我不能访问
design
变量,而是我问题第一部分中的
doc
变量。真正的问题是,为什么nokogiri在控制台中工作良好,而不是在视图中?