我正在使用来自this的示例幻灯片演示代码来自我的Rails应用程序的Codepen,该幻灯片演示正常工作,但对于包含多个图像的帖子,仅显示1张图像。问题一定在li类导航点中,我不确定到底要包含什么。我只想使用导航点滚动浏览图像,这就是示例中缺少下一个和上一个导航箭头的原因。
<% if @post.images.attached? %>
<ul class="slides">
<% @post.images.each_with_index do |image, index| %>
<input type="radio" name="radio-btn" data-id="<%= index %>" checked />
<li class="slide-container">
<div class="slide">
<%= image_tag image, size: "250x250" %>
</div>
</li>
<li class="nav-dots">
<label for="<%= image %>" class="nav-dot" data-id="<%= index %>"></label>
</li>
<% end %>
</ul>
<% end %>
示例代码
<ul class="slides">
<input type="radio" name="radio-btn" id="img-1" checked />
<li class="slide-container">
<div class="slide">
<img src="http://farm9.staticflickr.com/8072/8346734966_f9cd7d0941_z.jpg" />
</div>
<div class="nav">
<label for="img-6" class="prev">‹</label>
<label for="img-2" class="next">›</label>
</div>
</li>
<input type="radio" name="radio-btn" id="img-2" />
<li class="slide-container">
<div class="slide">
<img src="http://farm9.staticflickr.com/8504/8365873811_d32571df3d_z.jpg" />
</div>
<div class="nav">
<label for="img-1" class="prev">‹</label>
<label for="img-3" class="next">›</label>
</div>
</li>
<input type="radio" name="radio-btn" id="img-3" />
<li class="slide-container">
<div class="slide">
<img src="http://farm9.staticflickr.com/8068/8250438572_d1a5917072_z.jpg" />
</div>
<div class="nav">
<label for="img-2" class="prev">‹</label>
<label for="img-4" class="next">›</label>
</div>
</li>
<input type="radio" name="radio-btn" id="img-4" />
<li class="slide-container">
<div class="slide">
<img src="http://farm9.staticflickr.com/8061/8237246833_54d8fa37f0_z.jpg" />
</div>
<div class="nav">
<label for="img-3" class="prev">‹</label>
<label for="img-5" class="next">›</label>
</div>
</li>
<input type="radio" name="radio-btn" id="img-5" />
<li class="slide-container">
<div class="slide">
<img src="http://farm9.staticflickr.com/8055/8098750623_66292a35c0_z.jpg" />
</div>
<div class="nav">
<label for="img-4" class="prev">‹</label>
<label for="img-6" class="next">›</label>
</div>
</li>
<input type="radio" name="radio-btn" id="img-6" />
<li class="slide-container">
<div class="slide">
<img src="http://farm9.staticflickr.com/8195/8098750703_797e102da2_z.jpg" />
</div>
<div class="nav">
<label for="img-5" class="prev">‹</label>
<label for="img-1" class="next">›</label>
</div>
</li>
<li class="nav-dots">
<label for="img-1" class="nav-dot" id="img-dot-1"></label>
<label for="img-2" class="nav-dot" id="img-dot-2"></label>
<label for="img-3" class="nav-dot" id="img-dot-3"></label>
<label for="img-4" class="nav-dot" id="img-dot-4"></label>
<label for="img-5" class="nav-dot" id="img-dot-5"></label>
<label for="img-6" class="nav-dot" id="img-dot-6"></label>
</li>
</ul>
答案 0 :(得分:1)
我修复了代码。这应该起作用。
<% if @post.images.attached? %>
<% indexes = [*1..@post.images.size] %>
<ul class="slides">
<% @post.images.each_with_index do |image, index| %>
<input type="radio" name="radio-btn" id="img-<%= indexes[index] %>" <%= 'checked' if index == 0 %> />
<li class="slide-container">
<div class="slide">
<%= image_tag image %>
</div>
<div class="nav">
<label for="img-<%= indexes[index - 1] %>" class="prev">‹</label>
<label for="img-<%= indexes[(index + 1) % indexes.last] %>" class="next">›</label>
</div>
</li>
<% end %>
<li class="nav-dots">
<% indexes.each do |i| %>
<label for="img-<%= i %>" class="nav-dot" id="img-dot-<%= i %>"></label>
<% end %>
</li>
</ul>
<% end %>