2016-04-23 49 views
0

我正在用TradingCard模型构建Ruby on Rails应用程序。我有一个索引操作和相应的视图,我试图打印出每个TradingCard对象。这里的基本上是我在我的控制器已经有了,我的指标作用下:使用引导程序呈现索引动作中的div

@trading_cards = TradingCard.all 

这里是我的问题:我使用的引导来帮助我完成造型的基本网格状的方式,以及其便携式小屏幕。我使用bootstrap来帮助总体布局和流程,但是我为每个TradingCard对象构建了自己的小交易卡式容器;我用自己的CSS写了它。它没有指定的高度,所以它可以像它需要的那样高,以适应特定于该单个对象的所有文本。 在中等大小的屏幕上,我希望我的索引视图能够简单地显示每行三张交易卡,哪里的行不是由下面的行中的交易卡所隐藏的。这是一个问题,因为最好的做法是简单地包含在索引视图下,(当然有_trading_card视图中的文件夹部分):

<%= render @trading_cards %> 

在我_trading_card部分我有这样的事情:

<div class="col-md-4"> 
<%= trading_card.body %> 
</div> 

这种方法唯一的问题是我不能真正告诉布局每3张交易卡创建一个新行。相反,我不得不继续将col-md-4吐出一块真正很长的一排,结果,一些较高的交易卡最终挤进了它们上面的行,看起来很奇怪。

有没有更好的方法去完成这个整个方法?我错过了什么吗?或者是否有一种方法可以在我的控制器中指定我想要加载3个bundle中的对象,这样我就可以编写一个迭代,每次循环都创建一个新行?

任何帮助是如此赞赏。对不起,如果这个问题真的很长。你们总是很有帮助,我真的不能完全感谢你们。

在此先感谢您的任何帮助!

+1

好像你可以用'each_slice'来循环你的对象/项目。例如:'@ trading_cards.each_slice(3)do | cards |; end'一次需要3个对象 – Alfie

+0

嗨Alfie,我完全不知道each_slice()的存在。非常感谢你! – Parker

回答

2

而不是使用render @trading_cards来循环你的TradingCard s。你可以自己做3片(就像@alfie建议的那样)。

<% @trading_cards.each_slice(3) do |cards| %> 
    <div class="row"> 
    <% cards.each do |card| %> 
     <%= render card %> <!-- This will render your `_trading_card` partial --> 
    <% end %> 
    </div> 
<% end %> 
+0

非常感谢。我不知道.each_slice()甚至存在!我认为这解决了我的问题。非常感谢你们的帮助! – Parker

相关问题