getsとgets.to_iの違い
勉強したはずのgetsメソッドについて混乱したので、まとめました。
ユーザーから入力された値を表示や計算させたい時に使うのが「getsメソッド」
例えば、以下のように入力値+指定した言葉を表示したい時。
何が食べたいですか? (システムが表示)
↓
りんご (ユーザーが入力)
↓
りんご が食べたいです (システムが表示)
gets
getsメソッドで得られる入力は文字列
文字列 と 改行(も付いている)
.chomp
改行を外す
例)name = gets.chomp
.to_i
数値オブジェクトに変換してくれる
例) age = gets.to_i
getsで文字列が返り → to_i で文字列を整数に変換した値が返る
Sampleコード
def fruits(what)
puts "#{what}が食べたいです"
end
puts "何が食べたいですか?"
food = gets.chomp
fruits(food)
結果
何が食べたいですか?
りんご
りんごが食べたいです
参考にした記事
ありがとうございました!
(マジで)ゼロからRubyする編 〜gets.to_i〜 - tricky froggy but happy
以上です。
Gem libv8のインストールエラー対処法
開発環境のソースをダウンロードして、起動しようとするとGemのエラー。「libv8」がインストールできない。
環境
OS El Captain (10.11.5)
Rails 3.2.13
ターミナル
エラーメッセージ
An error occurred while installing libv8 (3.11.8.17), and Bundler cannot continue.
Make sure that `gem install libv8 -v '3.11.8.17'` succeeds before bundling.
画像
bundle installしたら上記エラーが出ました。どうやら、Marvericks以降はエラーが出るようです。
調べた結果、以下の通りオプションを指定すると通りました。
対処法
gem install libv8 -v '3.11.8.17' -- --with-system-v8
これでいけました!
参考にした記事
Resourcesの「ネスト」Ruby on rails
ネストとは
入れ子構造にする。親>子の関係を作ることができる。
例えば、ある商品のレビューを書きたいとき。どの商品に対するレビューか分かるようにしたい。
「do」「end」を書き加えると、ネストに出来る。
どのproducts(商品)に対するreviews(レビュー)か、分かるようになる。
resources :products do
resources :reviews
end
rake routesコマンドでルーティングを確認
Before
reviews GET /reviews(.:format) reviews#index
new_review GET /reviews/new(.:format) reviews#new
上記で設定した通り、productsとreviewsの間にproduct_idが入るようになり、どのproductsに対するレビューか判別できる。
After
product_reviews GET /products/:product_id/reviews(.:format) reviews#index
new_product_review GET /products/:product_id/reviews/new(.:format) reviews#new
以上です。