Как мне найти изображение, сгенерированное стрекозой с огурцом / капибарой? - PullRequest
1 голос
/ 16 марта 2011

В комментариях к решению для Как мне найти изображение на странице с огурцом / капибарой , кто-то спросил:

Я не могу понять, как это получить работать с URL, сгенерированными Dragonfly. Они выглядят так: /media/BAh_some_long_string_AwIw/12_11_52_810_5x5.jpg?s=7e360000, где 5x5.jpg - это имя моего файла. Я попробовал что-то вроде: // IMG [@src = "/ СМИ / / # {изображение}? S = *"] но это не работает Есть какие-нибудь советы? - Рамон Тайаг 25 февраля в 4: 18

У меня похожая проблема, только хуже - в моем случае сгенерированные пути к изображениям даже не содержат (jpg | png | gif) имени файла, они имеют только очень длинные идентификаторы:

<img src="/media/BAhbB1sHOgZmSSIdNGQ4MTEyOGU3ZjViZmQwZTQ4MDAwMDAyBjoGRVRbCDoGcDoKdGh1bWJJIg0yMDB4MjAwIwY7BlQ" />

(Использование стрекозы с монго / gridfs)

Эти пути хорошо отображаются, но я не могу понять, как их найти на шаге Огурец / Капибара: P

Есть идеи? Я посмотрел на функции Dragonfly , но они только проверяют рендеринг самого изображения, не обнаруживая его существования на html-странице.

1 Ответ

7 голосов
/ 19 июня 2011

Отвечая на мой собственный вопрос, после разговора с автором Dragonfly (он работает над тем, чтобы сделать это проще):

#route
match '/media/:dragonfly/:file_name', :to => Dragonfly[:images]  

#model
class Store
  include MongoMapper::Document
  key :photo_uid, String
  key :photo_name, String
  image_accessor :photo
end

#view
<%= image_tag @store.photo.thumb('274x207#').url(:suffix => "/#{@store.photo_name}") if @store.photo %>

#cucumber
Then I should see the image "my_photo.png"

Then /^I should see the image "(.+)"$/ do |image|  
  page.should have_xpath("//img[contains(@src, \"#{image}\")]")
end

Ключ добавляет в модель поле [attachment] _name, которое Dragonfly заполняет автоматически, а затем передает его в качестве суффикса для url (). И маршруты должны учитывать параметр: file_name помимо сгенерированного идентификатора стрекозы.

...