Rails Active Storage+Swiper点击幻灯片弹窗图片不匹配求助
问题分析与解决方案
你的问题根源非常明确:在link_to标签里,你固定使用了@home.home_photos[0],这意味着不管点击哪个幻灯片,链接都会指向第一张图片的Blob路径,自然弹窗只会显示第一张图。
修正后的代码
<div class="swiper-wrapper"> <!-- Slides--> <% @home.home_photos.each do |photo| %> <div class="swiper-slide"> <%= link_to rails_blob_path(photo), "data-toggle" => "gallery-top" do %> <%= image_tag photo, class: 'img-fluid' %> <% end %> </div> <% end %> </div> <div class="swiper-pagination swiper-pagination-white"></div> <div class="swiper-button-prev swiper-button-white"></div> <div class="swiper-button-next swiper-button-white"></div>
关键改动说明
- 将
rails_blob_path(@home.home_photos[0])替换为rails_blob_path(photo):循环中的photo变量代表当前迭代的home_photo对象,这样每个幻灯片的链接都会指向对应的图片资源路径,点击时就能匹配到正确的弹窗图片了。 - 保持其他Swiper相关结构不变,因为你的幻灯片展示逻辑本身是正常的,只需要修正链接指向的目标即可。
如果你的弹窗插件(比如自定义预览组件或Bootstrap类图库)需要额外关联属性(比如data-target或特定图片标识),可以根据插件要求补充对应的data属性,但核心问题已经通过修正link_to的目标路径解决了。
内容的提问来源于stack exchange,提问作者Sam Terano
相关产品推荐
相关产品推荐

