LoginSignup
2
2

More than 5 years have passed since last update.

usericonをランダムで生成する

Last updated at Posted at 2017-09-06

ここで今匿名掲示板を開発していてユーザーがサイトに来たら自動でアイコンが生成されるようにしたい。下記の流れで生成する仕組みを作る。

  • ユーザー作成時に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に記載した。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2