在目录中渲染图像

时间:2010-12-06 20:28:40

标签: ruby-on-rails image directory public

问候。我很确定有一种更清洁的方法可以做到这一点,但我找不到它。

我有一个用户可以选择包含在其内容中的图标目录。我部分创建了图标调色板供他们选择:

<% @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 %>

Dir返回的结果包括服务器“public / images / ...”上的完整相对路径,但我必须删除src路径的“public”才能找到图像。是否有使用而不是Dir的调用返回URI?我还在目录路径中包含了RAILS_ROOT,但这只是给了我一个更长的文件路径来清理到请求路径。

谢谢!

2 个答案:

答案 0 :(得分:2)

顺便说一句,要做Rails方式(以及良好的架构),移动线:

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

...离开视图并进入控制器。控制器是设置变量和进行数据存储访问的地方,视图是显示和格式化信息的地方。而且,我会通过为该路径创建一个常量来重构这一点,例如:在environment.rb中:

ICON_DIRECTORY_PATH = 'public/images/prompts/'

答案 1 :(得分:1)

当您获取文件列表时,只需删除公众......

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