ふわ

2021年04月04日に参加

学習履歴詳細

condition の値によってHTMLのクラスを動的に変更する機能

特になし

アプリ制作

  • RadioボタンにBootstrapを適用する
    • 見た目より機能を優先するため諦める。
  • td > label に右マージンを設定

condition の値によってHTMLのクラスを動的に変更する機能

実現したいこと

活動量が0の時、日記のViewで−2、ー1、0、+1、+2の中で0にのみに色を付ける

生成したいHTML(活動量が0のとき)

<div class="condition-wrapper">
    <div class="condition-title">活動量</div>
    <ul class="list-group list-group-horizontal">
      <li class="list-group-item">-2</li>
      <li class="list-group-item">-1</li>
      <li class="list-group-item list-group-item-info">0</li>
      <li class="list-group-item">+1</li>
      <li class="list-group-item">+2</li>
    </ul>
  </div>

どう実現するか?(考えたのみ、次回検証)

params ( "diary" => { "diary_date" => "2019-09-10",
                                "activity"   => "0",
                                "mood"       => "+1",
                                "appetite"   => "0",
                                "content"        => "テスト" }
# 各カラムの各value("-2", "-1",,,,"+2")ごとにparamsの値と一致するかを評価し、ハッシュを作成する。
# Viewでliタグを生成する際に、真偽値によってクラス名を追加する/追加しないと条件分岐させるため。

columns = [:activity, :mood, :appetite]

def conditon_hash_generator(column)
  hash = {}
  condition_hash = {}
  values = ["-2", "-1", "0", "+1", "+2"]

  values.each do |value|
    if value == params[:diary][column]
    hash[value] = true
  else
    hash[value] = false
  end

  condition_hash[column] = hash
end

columns.each do |column|
  # 怪しい
  # 生成したhashを一つずつ追加したい
  @conditions << condition_hash_generator(column)
end 

# @conditions はこうなるはず....
# {:activity => {"-2"=>false, "-1"=>false, "0"=>true, "+1"=>false, "+2"=>false }, :mood => {......... }, :appetite => {.......}}

参考:https://stackoverflow.com/questions/2626936/whats-an-elegant-way-to-conditionally-add-a-class-to-an-html-element-in-a-view

プロを目指す人のためのRuby入門

  • 2.12.3 Expression, Statememt
  • 2.12.5 Understanding reference concept
  • 2.12.6 Built-in library,Standard Library
  • 2.12.7 Require
    • Rubyを実行しているディレクトリがパスの起点になる
  • 2.12.10 puts, print, p
  • 3章 テストの自動化
    • minitest
CSS
Ruby
HTML

2019年09月10日(火)

4.3時間