1

我有一个网站,客户希望记录显示在两列中。我创建了几个范围,并在页面上设置一列返回奇数记录,另一列返回偶数记录。

这些是我的范围:

scope :odd, -> { where("id % 2 = ?", "0") }

scope :even, -> { where("id % 2 = ?", "1") }

似乎正在工作,但是:a)这是正确/安全的语法吗?b) 有没有更简单的方法来选择奇数和偶数 ID 号?

4

3 回答 3

2

虽然 ruby​​ 解决方案是可能的,但使用 CSS 更合适。这是因为您的功能主要是一个演示问题。

为了进一步指出区别,我会问,如果客户回来并想要一个四列显示怎么办?


实现如下显示

record 1 | record 2
record 3 | record 4
record 5 | record 6

HTML

<ul id="double">
  <li>CSS</li>
  <li>XHTML</li>
  <li>Semantics</li>
  <li>Accessibility</li>
  <li>Usability</li>
  <li>Web Standards</li>
  <li>PHP</li>
  <li>Typography</li>
  <li>Grids</li>
  <li>CSS3</li>
  <li>HTML5</li>
  <li>UI</li>
</ul>

CSS

ul{
  width:600px;
  margin-bottom:20px;
  overflow:hidden;
  border-top:1px solid #ccc;
}
li{
  line-height:1.5em;
  border-bottom:1px solid #ccc;
  float:left;
  display:inline;
}
#double li  { width:50%;}       /* 2 col */
#triple li  { width:33.333%; }  /* 3 col */
#quad li    { width:25%; }      /* 4 col */
#six li     { width:16.666%; }  /* 6 col */

演示:http: //jsfiddle.net/KnXEc/

更多:http ://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/

于 2013-06-14T15:30:53.707 回答
0

由于无论如何您都在显示所有记录,因此您可以使用Enumerable#partition

@even_ids, @odd_ids = Record.all.partition { |r| r.id.even? }
于 2013-06-14T14:10:39.467 回答
0

如果通过奇数和偶数 id 获取记录确实是您想要做的,那么您的解决方案很好。AFAIK 没有捷径,因为它不经常完成。

您应该考虑的一件事是,一旦您开始删除记录,列可能会变得不平衡。不过,这对您来说可能不是问题。

于 2013-06-14T13:53:56.843 回答