Jermaine Subia
Jermaine Subia

Reputation: 796

For Each in rails html pattern continuation

I am trying to imitate the following code and image:

<div class="container content">
<div class="text-center margin-bottom-50">
    <h2 class="title-v2 title-center">FOUR COLUMNS</h2>
    <p class="space-lg-hor">If you are going to use a <span class="color-green">passage of Lorem Ipsum</span>, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making <span class="color-green">this the first</span> true generator on the Internet.</p>
</div>

<div class="row  margin-bottom-30">
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img12.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 1">
            <span><img class="img-responsive" src="assets/img/main/img12.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img13.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 2">
            <span><img class="img-responsive" src="assets/img/main/img13.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3">
        <a href="assets/img/main/img14.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 3">
            <span><img class="img-responsive" src="assets/img/main/img14.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img15.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 4">
            <span><img class="img-responsive" src="assets/img/main/img15.jpg" alt=""></span>
        </a>
    </div>
</div>

<div class="row margin-bottom-30">
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img17.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 5">
            <span><img class="img-responsive" src="assets/img/main/img17.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img18.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 6">
            <span><img class="img-responsive" src="assets/img/main/img18.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3">
        <a href="assets/img/main/img19.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 7">
            <span><img class="img-responsive" src="assets/img/main/img19.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img20.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 8">
            <span><img class="img-responsive" src="assets/img/main/img20.jpg" alt=""></span>
        </a>
    </div>
</div>

<div class="row">
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img21.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 9">
            <span><img class="img-responsive" src="assets/img/main/img21.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img22.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 10">
            <span><img class="img-responsive" src="assets/img/main/img22.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3">
        <a href="assets/img/main/img23.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 11">
            <span><img class="img-responsive" src="assets/img/main/img23.jpg" alt=""></span>
        </a>
    </div>
    <div class="col-sm-3 sm-margin-bottom-30">
        <a href="assets/img/main/img24.jpg" rel="gallery2" class="fancybox img-hover-v1" title="Image 12">
            <span><img class="img-responsive" src="assets/img/main/img24.jpg" alt=""></span>
        </a>
    </div>
</div>
</div>
<!-- End Four Columns -->

What I want

In my code I am able to accomplish part of what I want to do as the images are being rendered on the page:

<!-- Four Columns -->
<div class="container content">
    <div class="text-center margin-bottom-50">
        <h2 class="title-v2 title-center">Take a look!</h2>
        <p class="space-lg-hor">If you are going to use a <span class="color-green">passage of Lorem Ipsum</span>, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making <span class="color-green">this the first</span> true generator on the Internet.</p>
    </div>
    <% @current.each do |gallery| %>
    <div class="row  margin-bottom-30">

        <div class="col-sm-3 sm-margin-bottom-30">
            <%= link_to gallery.image.url, :class => "fancybox img-hover-v1" do %>
                <span><%= image_tag gallery.image, :class => "img-responsive" %></span>
            <%end%>
        </div>
        <%end%>
    </div>


</div>
<!-- End Four Columns -->

Here is my outcome though as you will notice it is uneven and the next row that starts is off:

My outcome

Here is what my view page source html looks like:

<!-- Four Columns -->
        <div class="container content">
            <div class="text-center margin-bottom-50">
                <h2 class="title-v2 title-center">Take a look!</h2>
                <p class="space-lg-hor">If you are going to use a <span class="color-green">passage of Lorem Ipsum</span>, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making <span class="color-green">this the first</span> true generator on the Internet.</p>
            </div>

            <div class="row  margin-bottom-30">
                <div class="col-sm-3 sm-margin-bottom-30">
                    <a class="fancybox img-hover-v1" href="/system/galleries/images/000/000/008/original/GONZALO_%2822%29.JPG?1503775340">
                        <span><img class="img-responsive" src="/system/galleries/images/000/000/008/original/GONZALO_%2822%29.JPG?1503775340" alt="Gonzalo %2822%29" /></span>
</a>                </div>
                <div class="col-sm-3 sm-margin-bottom-30">
                    <a class="fancybox img-hover-v1" href="/system/galleries/images/000/000/007/original/Staples_Center_Bus_Bench.JPG?1503775325">
                        <span><img class="img-responsive" src="/system/galleries/images/000/000/007/original/Staples_Center_Bus_Bench.JPG?1503775325" alt="Staples center bus bench" /></span>
</a>                </div>
                <div class="col-sm-3 sm-margin-bottom-30">
                    <a class="fancybox img-hover-v1" href="/system/galleries/images/000/000/006/original/pexels-photo-323503.jpeg?1503775253">
                        <span><img class="img-responsive" src="/system/galleries/images/000/000/006/original/pexels-photo-323503.jpeg?1503775253" alt="Pexels photo 323503" /></span>
</a>                </div>
                <div class="col-sm-3 sm-margin-bottom-30">
                    <a class="fancybox img-hover-v1" href="/system/galleries/images/000/000/005/original/pexels-photo-532254.jpeg?1503775241">
                        <span><img class="img-responsive" src="/system/galleries/images/000/000/005/original/pexels-photo-532254.jpeg?1503775241" alt="Pexels photo 532254" /></span>
</a>                </div>
                <div class="col-sm-3 sm-margin-bottom-30">
                    <a class="fancybox img-hover-v1" href="/system/galleries/images/000/000/001/original/BERONICA_%286%29.JPG?1503774118">
                        <span><img class="img-responsive" src="/system/galleries/images/000/000/001/original/BERONICA_%286%29.JPG?1503774118" alt="Beronica %286%29" /></span>
</a>                </div>
            </div>


        </div>
        <!-- End Four Columns -->

There are no errors in my console pertaining to this issue. What I am trying to do is continue the html code sequence that after four images it starts a new row spaced and from the left not right. In the code I am imitating after four images it starts a new section. I do not know how to do it with my situation which is I am using a for each to render my images.

UPDATE

I was able to find this Ruby on rails foreach with bootstrap3 row class but when I tried to implement it with this code:

<% @current.each_slice(3) do |gallery| %>
<div class="row  margin-bottom-30">
<% @current.each do |gallery| %>
    <div class="col-sm-3 sm-margin-bottom-30">
        <%= link_to gallery.image.url, :class => "fancybox img-hover-v1" do %>
            <span><%= image_tag gallery.image, :class => "img-responsive" %></span>
        <%end%>
    </div>
    <%end%>
</div>
<%end%>

I got this result:

next result

As you can see it just duplicates the first part. Here is my controller if this helps:

class CreativesController < ApplicationController
  layout "creative"

  def index
    @campaigns = storage.list_for(params[:page], params[:tag])
    @campaigned = Campaign.order("created_at DESC").limit(6)
    @recent = Campaign.order("created_at DESC").limit(3)

    end

    # GET /posts/1
    # GET /posts/1.json
  def show

    @campaign = storage.friendly.find(params[:id])
    @gallery = storage.friendly.find(params[:id])
  end

  def gallery
   @galleries = storage.list_for(params[:page], params[:tag])
    @galleried = Gallery.order("created_at DESC")
    @current = Gallery.order("created_at DESC")

  end


  private

  def storage
    Campaign.published
    Gallery.published

  end







end

Upvotes: 0

Views: 68

Answers (2)

Roc Khalil
Roc Khalil

Reputation: 1385

You have to slice your gallery items to 4 items then do your loop:

<!-- Four Columns -->
<div class="container content">

  <% @current.each_slice(4) do |slice| %>
    <div class="row  margin-bottom-30">
      <% slice.each do |gallery| %>
        <div class="col-sm-3 sm-margin-bottom-30">
          <%= link_to gallery.image.url, :class => "fancybox img-hover-v1" do %>
              <span><%= image_tag gallery.image, :class => "img-responsive" %></span>
          <% end %>
        </div>
      <% end %>
    </div>
  <% end %>

</div>
<!-- End Four Columns -->

Upvotes: 0

yellowmint
yellowmint

Reputation: 130

Try this:

<% @current.each_slice(4) do |galleries| %>
<div class="row margin-bottom-30">
  <% galleries.each do |gallery| %>
  <div class="col-sm-3 sm-margin-bottom-30">
    <%= link_to gallery.image.url, :class => "fancybox img-hover-v1" do %>
    <span><%= image_tag gallery.image, :class => "img-responsive" %></span>
    <%end%>
  </div>
  <%end%>
</div>
<%end%>

Upvotes: 1

Related Questions