ruby-on-rails - 如何在 Ruby on Rails 应用程序中添加照片以更正索引?

标签 ruby-on-rails ruby indexing

我目前有一个 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/

相关文章:

ruby-on-rails - Rails 试图创建嵌套路由

ruby-on-rails - 通过 ActiveMerchant 退款(Paypal 结帐 Express)

ruby-on-rails - 在 Ruby on Rails 中从各种文档格式中获取文本

mysql - MySQL中如何给表设置索引?

ruby-on-rails - Ruby - 你能告诉我这是怎么回事吗

html - Rails 错误消息破坏注册表单

ruby-on-rails - 在 rails 中使用 rubzip2 和 paperclip,如何创建一个临时 zip 文件并将其保存到 paperclip?

ruby - 创建 ruby gem

SQL Server 表与索引的同义词

日期字段上的 MySQL 索引