1

Cucumber/Capybara のあるページで画像を見つけるにはどうすればよいですかのソリューションへのコメントで、誰かが尋ねました:

Dragonfly によって生成された URL でこれを機能させる方法がわかりません。/media/BAh_some_long_string_AwIw/12_11_52_810_5x5.jpg?s=7e360000 のようになります。5x5.jpg は私のファイル名です。//img[@src="/media/ / #{image}?s=*"] のようなものを試しましたが、うまくいきません。ヒントはありますか?–ラモン タヤグ2 月 25 日 4:18

私は同様の問題を抱えていますが、さらに悪いことに、私の場合、生成された画像パスには (jpg|png|gif) ファイル名さえ含まれず、これらの非常に長い ID しかありません。

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

(mongo/gridfs でトンボを使用)

これらのパスは問題なくレンダリングされますが、キュウリ/カピバラのステップでそれらを見つける方法がわかりません:P

何か案は?Dragonfly の機能を調べましたが、画像自体のレンダリングのみをテストしており、html ページ内での存在を検出していません。

4

1 に答える 1

7

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

重要なのは、Dragonflyが自動的に入力する[attachment] _nameフィールドをモデルに追加し、それをurl()のサフィックスとして渡すことです。また、ルートでは、生成されたトンボ識別子に加えて、:file_nameパラメーターを許可する必要があります。

于 2011-06-18T22:09:11.460 に答える