Rails范围为偶数和奇数记录ID

时间:2013-06-14 13:43:26

标签: ruby-on-rails-3

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

这些是我的范围:

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

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

看起来有效但是:a)这是正确/安全的语法吗? b)是否有更简单的方法来选择奇数和偶数ID?

3 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

如果通过奇数和偶数ID获取记录确实是您想要做的,那么您的解决方案就可以了。 AFAIK没有它的捷径,因为它不常用。

您应该考虑的一件事是,一旦开始删除记录,列可能会变得不平衡。不过,这可能不是你的担忧。

答案 2 :(得分:0)

由于您仍在显示所有记录,因此可以使用Enumerable#partition

@even_ids, @odd_ids = Record.all.partition { |r| r.id.even? }