ふわ

2021年04月04日に参加

学習履歴詳細

HTMLのclass名を動的に変更する(2)

コントローラでインスタンス変数にハッシュを代入してViewで展開するべきか、それともlocaleを使用してrenderすべきかが分からないこと。

アプリ制作

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

活動量が0のとき、0のliタグにのみclass名を追加する。

<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>
  • DiariesController実装
    • DiariesCopntrollerに@conditionsのようにインスタンス変数を作り、そこにconditionに関するhashを代入するべきか?
    • locale を使用すべきか?
    • @diariesからconditionの値にアクセスできるのでは?
    • 明日、質問しようと思います。
# params => { "diary_date" => "2019-09-10",
#            "activity"   => "0",
#            "mood"       => "+1",
#            "appetite"   => "0",
#            "content"    => "テスト" }

#app/controllers/diaries_controller.rb

class DiariesController < ApplicationController

  def create
    @diary = current_user.diaries.build(diary_params)
    @conditions = {}

    if @diary.save
      flash[:success] = '日記が正常に投稿されました'
      columns.each do |column|
        @conditions[column] = condition_hash_generator(column)
      end
      redirect_to root_url
    end 
  end

  private

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

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

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

    condition_hash[column] = hash
    condition_hash
  end
Ruby
HTML

2019年09月11日(水)

3.0時間