ここで今匿名掲示板を開発していてユーザーがサイトに来たら自動でアイコンが生成されるようにしたい。下記の流れで生成する仕組みを作る。
- ユーザー作成時に00から09までの数字を2つ付与
- 片方が背景色、片方にアイコンを設定し10パターン×10パターン計100パターン生成できるようにする
- 背景色はcssに値を渡すようにアイコンは画像をそれぞれお指定する
ユーザー作成時にランダムな値を持たせる
- icon_id・・・iconの画像のid
- icon_color_id・・・背景色のid
をそれぞれuserテーブルに持たせる。
application_controller.erb
def createlogin
if session[:user_id] == User.find_by(id:session[:user_id])
@current_user = User.find_by(id:session[:user_id])
else
@current_icon_id = rand(0..9)
@current_icon_color_id = rand(0..9)
@current_user = User.new(icon_id: @current_icon_id,icon_color_id: @current_icon_color_id)
@current_user.save
session[:user_id] = @current_user.id
end
end
rand(0..9)で0から9の値をランダムで付与する。
ハッシュでidを元にカラーコード、画像を表示
show.html.erb
img_ids = { 0 => "icon_00.png", 1 => "icon_01.png", 2 => "icon_02.png",3 => "icon_03.png",4 => "icon_04.png",5 => "icon_05.png",6 => "icon_06.png",7 => "icon_07.png",8 => "icon_08.png",9 => "icon_09.png"}
@img_id = img_ids[@comments_user.icon_id]
color_ids = { 0 => "#3399FF", 1 => "#FFCC33", 2 => "#6666FF",3 => "#FF66CC",4 => "#3366CC",5 => "#FF0099",6 => "#339933",7 => "#CC33CC",8 => "#00CC00",9 => "#FFFF66"}
@color_id = color_ids[@comments_user.icon_color_id]
これをすべてviewに記載。viewで書いた配列のcommentに対してidをそれぞれ取り出したいので。カラーコードはcssではなく、これもviewに。変数だったのでcssではなくviewに記載した。