2010-12-06 15 views
2

ご挨拶。私はこれを行うためのよりクリーンな方法があると確信していますが、私はそれを見つけることができません。ディレクトリ内の画像をレンダリングする

私は、ユーザーが自分のコンテンツに含めることができるアイコンのディレクトリを持っています。監督によって返された結果は、完全な相対パスを含め、サーバー上の「公共/画像/ ...」

<% @files = Dir['public/images/prompts/*.*'] %> 
<input type="hidden" id="test_prompt_image" value="/images/prompts/default.png" /> 
<% @files.each do |f| %> 
    <div onclick="$('#test_prompt_image').val('<%= f.gsub("public","") %>')" class="MultiColumn"> 
     <img src="<%= f.gsub("public","") %>"/> 
    </div> 
<% end %> 

が、私は持っている:私はそれらの中から選択するためのアイコンのパレットを作成する部分を持っていますイメージを見つけるためにsrcパスの "public"を削除します。 Dirの代わりにURIを返す呼び出しがありますか?また、ディレクトリパスにRAILS_ROOTを含めて混乱させましたが、それはちょうど私に要求パスにきれいにするより長いファイルパスを与えました。

ありがとうございます!

答えて

2

...公共の除去操作を行います。

@files = Dir['public/images/prompts/*.*'].map {|f| f.sub('public','') } 

...ビューの外にあり、コントローラーにあります。コントローラは、変数を設定してデータストレージアクセスを行う場所であり、ビューは情報を表示および書式設定する場所です。さらに、そのパスの定数を作成することで、これをさらにリファクタリングします。 in environment.rb:

ICON_DIRECTORY_PATH = 'public/images/prompts/' 
+0

余計なアドバイスをありがとう。これらのヒントやリマインダーを私の質問の文脈で入手することは、私のようにフレームワークに新しいものとして非常に貴重です。 – RSG

1

はちょうどあなたがファイルのリストをつかむとき、ラインを移動する事にRailsの道(と良いアーキテクチャ)を行うために、ところで

@files = Dir['public/images/prompts/*.*'].map {|f| f.sub('public','') } 
+0

ありがとうございます。これは間違いなく私がそこにいるよりも優れています。本当にこれを行うためのきれいな方法がない場合、私は終わりにそれを閉じます。 – RSG

関連する問題