2011-11-04 6 views
6

Dir.glob()コマンドを使用して私の/app/assets/imagesディレクトリ内のサブディレクトリから画像をランダムに選択しようとしていて、それをimage_tagで表示しています。どういうわけか私はそれを働かせることはできません。アセットパイプラインは、ディレクトリの前に「/資産」を挿入されて見ることができるようにDir.globを使用してRails 3.1のアセットを一覧表示しますか?

ActionController::RoutingError (No route matches [GET] "/assets/app/assets/images/badges/produce.png"): 

:次のエラーが生成さ

- @badges = Dir.glob("app/assets/images/badges/*") 
= image_tag @badges.sample 

は、ここに私のコードです。大丈夫ですね、ここであなたに会いましょう。

- @badges = Dir.glob("images/badges/*") 
    = image_tag @badges.sample 

ActionController::RoutingError (No route matches [GET] "/assets"): 

は、私がここで間違って何をやっている:だから次の私はそれを動作させると、次の結果を得るために、クエリのパスから/app/assetsを削除してください?あなたの助けを前もってありがとう!

答えて

7

Dir.globは、相対パスで画像を返すために起こっているので、あなたのproduce.pngファイルとして返されます。

`app/assets/images/badges/produce.png` 

ただし、image_tagにのみbadges/produce.png一部を渡す必要があります。あなたはこの前のようなものを削除する必要があります。

= image_tag @badges.sample.gsub("app/assets/images/", "") 

があなたの代わりにヘルパーでこれを固執することもできます。

def random_badge 
    badges = Dir.glob("app/assets/images/badges/*") 
    image_tag badges.sample.gsub("app/assets/images/", "") 
end 

をして、あなたのビューで:

= random_badge 
+0

あなたがチャンピオンです!ありがとう! – thoughtpunch

+0

作品!ありがとうございました – Dmitri

関連する問題