カテゴリー:
Rails
タグ:
 Rails cycle

このエントリーをはてなブックマークに追加
更新日時:
2013年02月19日(火)
作成日時:
2013年02月19日(火)

前の記事 / 次の記事

cycleを使うことで値を交互に取得することが出来る。
テーブルのサイクルはjQueryプラグインやCSSフレームワークで実現出来たりして
あまり使う機会がないのだけど使う機会に恵まれたのでまとめ。

例えばテーブルの奇数行と偶数行でそれぞれ別のクラスを割り当てるとして

-#haml
%table
  - @items.each do |item|
    %tr{:class => cycle(:odd, :even)}
      %td=item.name
      %td=item.description

のように書ける。

また、サイクルさせる値は2値である必要はなく、
3つ異常の値を指定した場合でも順番に取得してくれる。

-#haml
%table
  - @items.each do |item|
    %tr{:class => cycle(:yellow, :magenta, :cyan, :black)}
      %td=item.name
      %td=item.description

そして、サイクルはreset_cycleでリセットすることが出来る。

-#haml
%table#item-table-zero
  - @items.each do |item|
    %tr{:class => cycle(:odd, :even)}
      %td=item.name
      %td=item.description

%table#item-table-first
  - @items.each do |item|
    %tr{:class => cycle(:yellow, :magenta, :cyan, :black, :name=>:cycle_*col)}
      %td=item.name
      %td=item.description

-# サイクルをリセット
- reset_cycle(:cycle_color)
%table#item-table-second
  - @items.each do |item|
    %tr{:class => cycle(:yellow, :magenta, :cyan, :black)}
      %td=item.name
      %td=item.description

更に、サイクルには名前を付けられ、名前を付けた場合は名前を指定してリセットすることが出来る。

-#haml
%table#item-table-zero
  - @items.each do |item|
    %tr{:class => cycle(:odd, :even)}
      %td=item.name
      %td=item.description

%table#item-table-first
  - @items.each do |item|
    %tr{:class => cycle(:yellow, :magenta, :cyan, :black, :name => :cycle_color)}
      %td=item.name
      %td=item.description

-# サイクルを指定してリセット
- reset_cycle(:cycle_color)
%table#item-table-second
  - @items.each do |item|
    %tr{:class => cycle(:yellow, :magenta, :cyan, :black, :name => :cycle_color)}
      %td=item.name
      %td=item.description