我非常需要你的帮助。我有很多:通过关系模型:产品,类别和分类(作为中间模型)。在我看来,我想迭代@products并获取类别 每次迭代时的字段“标题”。
以下是我的观点:
<div class="col-md-9">
<div class="row">
<section id="projects">
<ul id="thumbs">
<!-- Item Project and Filter Name -->
<% @products.each do |product| %>
<% product.categories.each do |category| %>
<li class="item-thumbs col-md-4 <%= category.title %> ">
<% end %>
<!-- Fancybox - Gallery Enabled - Title - Full Image -->
<a class="hover-wrap fancybox" data-fancybox-group="gallery" title="The City" >
<span class="overlay-img"></span>
<%= icon 'font-icon-plus' %>
</a>
<!-- Thumb Image and Description -->
<%= image_tag product.product_images, alt: product.description %>
<p><%= product.price %></p>
</li>
<!-- End Item Project -->
<% end %>
</ul>
</section>
</div>
如您所见,我需要在每次迭代时获取类别标题,以便将其插入到“class”中,并将每个产品标签链接到菜单“li”。
问题在于,当我在@products循环中遍历@categories时,它只执行一次因此我没有获得每个产品的类别标题。
答案 0 :(得分:0)
在我看来,您的循环重复创建开始li
标记,而不是收集您想要的所有类别标题,从而导致HTML无效。尝试编写你的标记,而不是:
<div class="col-md-9">
<div class="row">
<section id="projects">
<ul id="thumbs">
<!-- Item Project and Filter Name -->
<% @products.each do |product| %>
<!-- RELEVANT CHANGES RIGHT HERE! -->
<li class="item-thumbs col-md-4 <%= product.categories.pluck(:title).join(' ') %>">
<!-- Fancybox - Gallery Enabled - Title - Full Image -->
<a class="hover-wrap fancybox" data-fancybox-group="gallery" title="The City" >
<span class="overlay-img"></span>
<%= icon 'font-icon-plus' %>
</a>
<!-- Thumb Image and Description -->
<%= image_tag product.product_images, alt: product.description %>
<p><%= product.price %></p>
</li>
<!-- End Item Project -->
<% end %>
</ul>
</section>
</div>
</div>
这使用Rails的方便pluck方法直接从数据库中获取所有相关的类别标题,然后将它们与空格连接在一起以生成有效的class
字符串。这是你想要的效果吗?