我现在有一个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张图片的网格。我想把图片上传到正确的数字索引里。我不知道该怎么办。我需要做20个预先确定的li,然后将索引号与工件号匹配吗?
我想我需要确定模型中的索引。但是,我不确定我是否做了预先确定的李的。
  # do I need to make predetermined li's?

  def determine_index
    # take the piece_number
    # have piece number correlate to index
  end

然后我猜在控制器中我需要写一个类似于这样的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

钢轨V 4.1.4.
使用回形针和aws sdk上传照片作为旁注。

最佳答案

在我的问题中,我想我本可以更清楚地知道,我需要在网格中有20个预先确定的框。这些预定框将填充默认图像。一旦用户上传一张照片到其中一个网格,它就会循环浏览每张照片。在这个问答中,我将集中精力建立网格。
本例中的默认图像只是“foo”。
我设置了一个图像URL的哈希值。现在,默认的映像将只是“foo”,因为我不想在stackoverflow上添加指向我的s3 bucket的链接。
然后我把这幅杰作的所有部分都圈起来。
在这个循环中,我根据散列的键值将图像放入预先确定的散列中,这个键值直接与工件编号相关。
杰作控制器.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

在视图中,我继续使用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/

10-15 20:32