从已知组件构建图像URL

时间:2012-05-23 17:02:35

标签: ruby-on-rails

我创建了一个rails应用,当有人搜索某个属性然后点击查看更多详细信息时,我想向他们展示属性详细信息和该属性的图像。我已经找到包含所有属性详细信息的表格,并且我已将图像上传到Amazon S3,但无法解决如何构建图像网址的问题:

数据库中的所有属性在主数据库表中都有一个sysid,例如335758034,并且该sysid包含在S3图像URL中,并且图像编号附加到该URL的末尾,因此它是#s可以像这样计算出网址:

https://s3.amazonaws.com/images732/Photo335758034-3.jpeg

并且表格中的列告诉您有多少图像属性。所以,如果你知道有5张图像,我就必须像这样循环:

https://s3.amazonaws.com/images732/Photo + sysid-1.jpeg

https://s3.amazonaws.com/images732/Photo + sysid-2.jpeg

https://s3.amazonaws.com/images732/Photo + sysid-3.jpeg

https://s3.amazonaws.com/images732/Photo + sysid-4.jpeg

https://s3.amazonaws.com/images732/Photo + sysid-5.jpeg

我该怎么做?任何帮助非常感谢,谢谢,亚当

更新:

以下是它的最终结果:

<table summary="Property images">
    <% (1..@property.image_count).each do |photo| %>
<tr>
  <td><%= image_tag("https://s3.amazonaws.com/images732/Photo#{@property.sysid}-#{photo}.jpeg") %></td>
</tr>

<% end %>

2 个答案:

答案 0 :(得分:0)

在Rails中,

(1..5).each do |n|
  image_tag "https://foo.com/photo/photo-#{n}.jpg"
end

当然,不是像本例中那样迭代一个范围,而是可以直接遍历你想要的任何东西。

答案 1 :(得分:0)

您可能需要考虑使用paperclip来帮助rails直接与S3通信。您可以创建一个包含照片的表格,并将属性记录设置为has_many:photos。那时很容易引用属性对象上的照片集合。像

这样的东西
@property.photos.each do |photo|
   image_tag photo.url
end

通过这种方式,您可以使用rails来处理所有背景内容。有关使用paperclip和s3的信息,请查看这些

http://doganberktas.com/2010/09/14/amazon-s3-and-paperclip-rails-3/

http://railscasts.com/episodes/134-paperclip