在我的用户资料中,我想添加4张该用户上传的最新照片。最初,我有<%- @user.photos.last(4).each do |photo| %>。这段代码可以工作,但它不适用于我的布局。所以我需要一行显示最后2张照片,而第二行显示最后3-4张照片。
这是我想出来的结果,<%- @user.photos.last(3,4).each do |photo| %>这行代码不起作用。我也尝试过(3-4)
<div class="photo-box">
<%- @user.photos.last(2).each do |photo| %>
<a href="<%= user_photo_path(@user.username, photo.id) %>" class="photo-thumbnail">
<div class="photo-mini">
<%= image_tag photo.url %>
</div>
</a>
<% end %>
</div>
<div class="photo-box">
<%- @user.photos.last(3,4).each do |photo| %>
<a href="<%= user_photo_path(@user.username, photo.id) %>" class="photo-thumbnail">
<div class="photo-mini">
<%= image_tag photo.url %>
</div>
</a>
<% end %>
</div>发布于 2016-09-22 03:24:10
您可以在photos数组上使用[]方法。
-1获取最后一个元素,-2获取倒数第二个元素,依此类推。
@user.photos[-2..-1].each #=> return the last two pictures当然,在这种情况下,您可以简单地使用@user.photos.last(2).each。
@user.photos[-4..-3].each #=> return the last 3-4 pictures. 这将抛出一个错误,除非@user.photos的长度至少为4,否则,您将尝试访问不存在的值。因此,为了检查这一点,您可以将div包装在if语句中。
<% if @user.photos.length >= 2 %>
<div class="photo-box">
<% @user.photos.last(2).each do |photo| %>
...
<% end %>
</div>
<% end %>
<% if @user.photos.length >= 4 %>
<div class="photo-box">
<% @user.photos[-4..-3].each do |photo| %>
...
<% end %>
</div>
<% end %>发布于 2016-09-22 04:53:21
我将获得数组中的最后四个数组,然后使用#in_groups_of将它们分成两组。
然后,您可以遍历包含两张照片的两个数组,以创建div。这种方法很容易扩展到n组m张照片。
类似于:
<%- @user.photos.last(4).in_groups_of(2, false).each do |photo_group| %>
<div class="photo-box">
<%- photo_group.each do |photo| %>
<a href="<%= user_photo_path(@user.username, photo.id) %>" class="photo-thumbnail">
<div class="photo-mini">
<%= image_tag photo.url %>
</div>
</a>
<% end %>
</div>https://stackoverflow.com/questions/39624924
复制相似问题