開始44日目〜超初心者、文系、30代のスタート〜

本日学んだこと:

Rails:

<% %>の方は結果を出力しない計算や繰り返し処理などのRubyコードを記述するのに使用し、<%= %>の方は文字列を出力するような処理で使用します。

 

requirepermitの違い

require メソッドを利用することで、引数に設定した key 値だけを取得することができます。 

params.require( :controller ) とすれば  "users" が取得できます。

params.require( :action ) とすれば "create" が取得できます。

 

permit メソッドは許可したいパラメータだけをフィルタしてくれます。

例えば、User モデルに存在しない「電話番号」を一緒に POST したとしても、許可されていないので返り値に存在しません。

 

「メールアドレス」が複数ある場合など、配列でパラメータを受け取りたい場合は以下のように記載します。

  def user_params

    params.require(:user).permit(:name, email: []) # 配列の場合

  end

 

Ruby:

def check_reviews(a_cart)

# リストの表示

  total_price = 0

  line   = "---------------------------"

  a_cart.each do |post|

    puts "#{post[:name]}/#{post[:price]}/#{post[:count]}\n#{line}"

    total_price += post[:price] * post[:count]

  end

  puts "合計金額 : #{total_price}"

 

  puts "[0]購入確定する"

  puts "[1]買い物を続ける"

  input = gets.to_i

 

  if input == 0

    buy_program(total_price)

  elsif input == 1

    return

  else

    exception

  end

end

 

def buy_program(total_price)

  puts "合計金額 : #{total_price}"

  puts "支払う金額を入力してください:"

  input = gets.to_i

  if input >= total_price

    post = input - total_price

    puts "お釣り : #{post}"

  else

    puts "金額が足りません"

    buy_program(total_price)

  end

end

 

 

1. total_price = 0を定義しているが、total_price += post[:price] * post[:count]に代入するために0を定義する必要があるのか。

       定義してあげることで、電卓でいうACの役割を果たす、つまり一度計算した値がそのまま記録として残ってしまい

2. puts "#{post[:name]}/#{post[:price]}/#{post[:count]}\n#{line}”と記載しているが、これ以外の記載方法でも正解あるか。

  →puts post[:name]改行して次・・・と記載しても正解である。

3.  puts "合計金額 : #{total_price}”に表示されるのは、 total_price += post[:price] * post[:count]で入力された値なのか。

  その通りで代入された値が、どんどん下へいって導入されていくという流れである。

 

バリュー名とは、時計、山田さんなど具体的な名称のことであり、キー名とはnamecountなど分類のことを表す。

ここで表示されているのは、ハッシュ名[:キー名]である。

 

Ruby:

books.lengthこれは何?

配列の中に入っているものの個数。(lengthメソッドのこと)

 

Rubyの形式は決まっているので、1つのブロックではこの操作、こっちはこの操作など、

ブロック別で分けて考えるのが良い。

登録、一覧表示、詳細表示、計算式表示と代入、

 

Eachとは配列の数だけ繰り返し要素を出力する。

puts "test”と記載すれば、要素の回数だけ出力する。

 

def average_price(books)

  total = 0

  books

  books.each do |book|

    puts "test"

    total += book[:price]

  end

  average = total / books.length

end

この書き方で、要素に入っている値[:price]を取り出し、totalに代入される。

そして、lengthメソッドでbooksに入っている要素個数を取り出し、計算される。

 

明日やること:

本試験の再受講と復習した後、再々試験の受験。

応用カリキュラムの学習計画を立てる。

 

感想:

模試は完全なるカンニングをしながらだった。

Rubyに対して一抹の不安を覚えた。

何故=0を定義する必要があるのかは理解した。

eachメソッドについても理解できた。

あとは計算式の表記方法、ブロック別でどう表記するかが課題だ。

必ず明日で基礎カリキュラムを終了して、本試験に突入する!!