【问题标题】:Use only the first image if there are multiples如果有多张图片,则仅使用第一张图片
【发布时间】:2014-02-01 07:56:25
【问题描述】:

我想了解如何实现以下目标。我有一个简单的 cms,可让您上传投资组合信息/图像。用户可以上传一张图片或多张图片。

为了显示每张图片,我使用 .each 并遍历每个投资组合的所有图片...

<!-- Project Feed -->
    <div class="project-feed clearfix">
     <% @portfolios.each do |p| %>
      <div class="one-third project-item"><!-- add data filter class here to enable selection of sectors-->

       <% p.images.each do |i| %>
        <%= image_tag(i.photo.url(:portfolio_square)) %>
         <div class="overlay">
         <!-- Small image bottom right of overlay, click and can navigate through all images 
          <%= image_tag(i.photo.url(:portfolio_large), :class => 'lightbox-link folio', :rel => 'gallery') %> -->
          <%= link_to p do %>
           <h5><%= p.title %> </h5>
          <% end %>
           <p>
          <%= p.sectors.map(&:name).join(", ") %>
          </p>
         </div><!--/overlay-->
         <h4><%= p.title %></h4>
      </div>
       <% end %>
     <% end %>

我的问题是,如果有多个图像分配给投资组合(假设投资组合 3 有 4 个与之关联的图像),那么它们都会显示......

所以我想实现这个布局

Portfolio 1   Portfolio 2  Portfolio 3  

相对于

 Portfolio 1   Portfolio 2  Portfolio 3

 Portfolio 3   Portfolio 3  Portfolio 3

如果有多张图片,我怎样才能只抓取一张图片?这会是.first吗?虽然不确定语法以及它如何适合我的代码......或者如果图像计数超过 1,我是否会创建一个单独的块并将其放入 if 语句中?

任何帮助表示赞赏?

【问题讨论】:

  • 不完全确定您要做什么。您是否希望用户看到他刚刚上传的图像而不是他拥有的所有图像?或者您希望用户能够看到他上传的(可能)多张图片中的第一张图片?
  • 查看第一张可能有很多的图片(并不总是多张图片)
  • 尝试使用这条线&lt;% p.images.each do |i| %&gt;。我猜这是一个数组,使用.last.first 将是我的第一个赌注,这取决于您在上传时如何存储图片。
  • 我试过了 但是当我使用它时没有显示图像

标签: ruby arrays ruby-on-rails-3 paperclip


【解决方案1】:

你可以像这样使用first

<%= image_tag(p.images.first.photo.url(:portfolio_square)) %>

如果你这样做,你不需要:

<% p.images.each do |i| %>

【讨论】:

  • 感谢您提供答案.. 这和 Uri Agassi 一样有效。我现在可以看到,我不必在单独的块中遍历图像,只需像您一样加入它们 (p. images.first.photo)..我会把你的答案标记为你第一个发布东西的地方,而且你也帮助重构了我的代码:-)
  • 不客气。请注意,如果有可能没有任何图像的投资组合,您应该检查p.images.first 不会返回nil
【解决方案2】:

如果我理解正确,您希望将 p.images.each 的行为更改为仅采用第一个元素,在这种情况下,对您的代码影响最小的更改可能是:

<% p.images.take(1).each do |i| %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 2017-09-09
    • 1970-01-01
    • 2017-03-21
    • 2016-09-07
    • 2013-07-28
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多