如何在循环中访问关联模型的单个属性?

时间:2015-11-15 17:59:27

标签: ruby-on-rails

我非常需要你的帮助。我有很多:通过关系模型:产品,类别和分类(作为中间模型)。在我看来,我想迭代@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时,它只执行一次因此我没有获得每个产品的类别标题。

1 个答案:

答案 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字符串。这是你想要的效果吗?