開始44日目〜超初心者、文系、30代のスタート〜
本日学んだこと:
<% ~ %>の方は結果を出力しない計算や繰り返し処理などのRubyコードを記述するのに使用し、<%= ~ %>の方は文字列を出力するような処理で使用します。
requireとpermitの違い
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]で入力された値なのか。
→その通りで代入された値が、どんどん下へいって導入されていくという流れである。
バリュー名とは、時計、山田さんなど具体的な名称のことであり、キー名とはnameやcountなど分類のことを表す。
ここで表示されているのは、ハッシュ名[:キー名]である。
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メソッドについても理解できた。
あとは計算式の表記方法、ブロック別でどう表記するかが課題だ。
必ず明日で基礎カリキュラムを終了して、本試験に突入する!!