我目前有一个 Ruby on Rails 应用程序,我可以在其中上传照片和数字。
<%= form_for(@masterpiece) do |f| %>
<%= f.label :user_piece %><br>
<%= f.file_field :user_piece %><br>
<%= f.label :piece_number %><br>
<%= f.number_field :piece_number %>
<%= f.submit %>
<% end %>
当照片上传时,它会进入一个无序列表。
<ul>
<% @masterpieces.each do |masterpiece| %>
<li><%=image_tag masterpiece.user_piece.url(:square) %></li>
<% end %>
</ul>
但是,我希望有一个 4 行的网格,每行 5 张图片。我希望图像上传到 li 中正确的数字索引。我不知道该怎么做。我是否需要制作 20 个预定的里,然后将索引号与片号匹配?
我的猜测是我需要确定模型中的索引。但是,我不确定我是否按照预先确定的 li's。
# do I need to make predetermined li's?
def determine_index
# take the piece_number
# have piece number correlate to index
end
然后我猜测我需要在 Controller 中编写一个与此类似的 if else 语句。我只为前三个做了一个例子。
def create
@masterpiece = Masterpiece.new(masterpiece_params)
respond_to do |format|
if @masterpiece.save
index_placement = @masterpiece.determine_placement
if index_placement == 1
# put in the first li
elsif index_placement == 2
# putin the second li
else
# put in the 3rd li
end
format.html { redirect_to masterpieces_url }
else
format.html { render :index }
end
end
end
Rails v 4.1.4。 使用回形针和 aws-sdk 上传照片作为旁注。
最佳答案
在我的问题中,我想我可以更清楚地知道我需要在网格中有 20 个预先确定的框。这些预定框将填充默认图像。一旦用户将照片上传到其中一个网格,它将循环浏览每张照片。在这个问答中,我将只专注于设置网格。
本例中的默认图像只是“foo”。
我设置了 image_urls 的散列。现在,默认图像将只是“foo”,因为我不想在 Stackoverflow 上添加指向我的 s3 存储桶的链接。
然后我遍历杰作的所有片段。 在这个循环中,我根据散列的键值将图像铲入预先确定的散列中,这与片数直接相关。
masterpieces_controller.rb
def index
image_urls = {
1 => ["foo"],
2 => ["foo"],
3 => ["foo"],
4 => ["foo"],
5 => ["foo"],
6 => ["foo"],
7 => ["foo"],
8 => ["foo"],
9 => ["foo"],
10 => ["foo"],
11 => ["foo"],
12 => ["foo"],
13 => ["foo"],
14 => ["foo"],
15 => ["foo"],
16 => ["foo"],
17 => ["foo"],
18 => ["foo"],
19 => ["foo"],
20 => ["foo"],
}
Masterpiece.all.each do |masterpiece|
image_urls[masterpiece.piece_number] << masterpiece.user_piece.url(:square)
end
@image_urls = image_urls
end
在 View 中,我继续使用 each_slice 方法。
<ul>
<% @image_urls.each_slice(5) do |row| %>
<% row.each do |_, urls| %>
<li class="square-image" data-urls=<%= urls.to_json %>>
<span class="user-image"><%= image_tag(urls.sample) %></span>
</li>
<% end %>
<% end %>
</ul>
关于ruby-on-rails - 如何在 Ruby on Rails 应用程序中添加照片以更正索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25853222/