##初めに
eachメソッドでテーブルから取得してきた値に対してそれぞれ違った処理をしたい!ときってありませんか?
例えば、、、
vegtables = [キャベツ,トマト,なす]
がデータベース上のテーブルに保存されていて、これをeachメソッドを使って値を取得し、"トマト"だけ赤色にしたい、boxの形を変更したい時など。
実装中にハマったので共有します。
##結 論
each.with_indexメソッドを使う。
##詳 細
コントローラーの記述は以下の通り
vegtables_controller.rb
class VegtablesController < ApplicationController
def index
@vegtables = Vegtable.all
end
なお、vegtablesテーブルのveg_nameカラムには
veg_name=[キャベツ,レタス,きゅうり,トマト,なす,ホウレンソウ,タマネギ,ジャガイモ]
が入っています。
これにそれぞれ異なるclassを与えたいとき
index.html.erb
<% i=0 %>
<% @vegtables.each.with_index do |v, i| %>
<div class="wrapper_<%= ++i %>">
<%= v.veg_name %>
</div>
<% end %>
とすることで実装できました!
因みに、scssに書いたclassのnameは
.wrapper_0{}
.wrapper_1{}
.wrapper_2{}
・・・
などです。