首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用`@photo.last()`显示最后三张和第四张照片

如何使用`@photo.last()`显示最后三张和第四张照片
EN

Stack Overflow用户
提问于 2016-09-22 03:21:49
回答 2查看 42关注 0票数 0

在我的用户资料中,我想添加4张该用户上传的最新照片。最初,我有<%- @user.photos.last(4).each do |photo| %>。这段代码可以工作,但它不适用于我的布局。所以我需要一行显示最后2张照片,而第二行显示最后3-4张照片。

这是我想出来的结果,<%- @user.photos.last(3,4).each do |photo| %>这行代码不起作用。我也尝试过(3-4)

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-22 03:24:10

您可以在photos数组上使用[]方法。

-1获取最后一个元素,-2获取倒数第二个元素,依此类推。

代码语言:javascript
复制
 @user.photos[-2..-1].each #=> return the last two pictures

当然,在这种情况下,您可以简单地使用@user.photos.last(2).each

代码语言:javascript
复制
 @user.photos[-4..-3].each #=> return the last 3-4 pictures. 

这将抛出一个错误,除非@user.photos的长度至少为4,否则,您将尝试访问不存在的值。因此,为了检查这一点,您可以将div包装在if语句中。

代码语言:javascript
复制
<% 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 %>
票数 2
EN

Stack Overflow用户

发布于 2016-09-22 04:53:21

我将获得数组中的最后四个数组,然后使用#in_groups_of将它们分成两组。

然后,您可以遍历包含两张照片的两个数组,以创建div。这种方法很容易扩展到n组m张照片。

类似于:

代码语言:javascript
复制
<%- @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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39624924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档