0

カルーセルを使用して画像を表示しています。クラウドに画像をアップロードしました。しかし、どういうわけかそれは自分自身を繰り返しています。これが私のコードです

div id="myCarousel" class="carousel slide">
<div class="carousell-inner">
    <% @img.each_with_index do |i|%>
    <% if i.gallery == "Art"%>
        <div class="active item">
            <%= image_tag (i.image.url) %>
        </div>

        <% i.next%> <!-- For incrementing the i value but it is not working-->
        <div class="item">
            <%= image_tag (i.image.url)%>   
        </div>
    <%end%> 
    <%end%>
    </div>
</div>

私が欲しいのはactive item、画像配列の最初のURLを表示し、非アクティブなアイテム(後でアクティブになります)に他の画像を表示することです。画像を繰り返さないでください。iの値が変化していないため、ここでは画像を繰り返しています。

4

3 に答える 3

0

私は最初にあなたが必要だと思っeach_with_indexたが、実際にはあなたはArtギャラリーからの画像にのみ興味があり、最初の画像が実際にArt画像であるかどうかわからないので、私は次のように試した:

<div id="myCarousel" class="carousel slide">
  <div class="carousell-inner">
    <% art_images_counter = 0 %>
    <% @img.each do |image|%>
      <% if image.gallery == "Art" %>
        <% if art_images_counter == 0 %>
          <div class="active item">
            <%= image_tag (image.image.url) %>
          </div>
        <% else %>
          <div class="item">
            <%= image_tag (image.image.url)%>   
          </div>
        <% end %>
        <% art_images_counter += 1 %>
      <%end%> 
    <%end%>
  </div>
</div>

お役に立てれば。

于 2012-12-12T16:00:00.650 に答える
0

手作業で答えを見つけました。Art Galleryまず、コントローラーで、このコードによってに属するすべての画像を見つけました。

 @image = Image.find_all_by_gallery("Art")

配列の最初の要素を表示するには@image、単純に を使用して@image.first、カルーセルのアクティブなアイテムで配列の最初の要素を呼び出すことができます。次に、そのitem部分について理解すべき基本的なことは、配列のすべての要素を直接呼び出して表示すると、配列の最初の要素もこの部分に表示されるということです。したがって、繰り返しが発生する可能性があります。これを回避するには、次のようにします。

i = @image.count
@image[1..i]

カルーセルの「項目」部分で最初の要素が繰り返されないようにします。他の人に役立つことを願っています。時間を割いてくれてありがとう。

于 2012-12-12T14:31:05.320 に答える
0

私はあなたが何を望んでいるのか理解し始めています:)データを分離する場合、ロジックを非常に単純にすることができます。

<div id="myCarousel" class="carousel slide">
    <div class="carousell-inner">
    <% @img.keep_if{|i| i.gallery == "Art"}.each do |i|%>
        <div class="active item">
            <%= image_tag (i.image.url) %>
        </div>
    <%end%>

    <% @img.keep_if{|i| i.gallery != "Art"}.each do |i|%>
        <div class="item">
            <%= image_tag (i.image.url)%>   
        </div>
    <%end%>
    </div>
</div>

ビューではなく、コントローラーでデータを準備することをお勧めします。

于 2012-12-12T13:22:53.077 に答える