IT女子のHappy × IT日記

IT女子がお届けする便利情報、Happyなことを共有します。

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.

 

 

画像

f:id:it-girl:20160524213226p:plain

 

bundle installしたら上記エラーが出ました。どうやら、Marvericks以降はエラーが出るようです。

 

調べた結果、以下の通りオプションを指定すると通りました。

 

対処法

gem install libv8 -v '3.11.8.17' -- --with-system-v8

 

これでいけました!

 

f:id:it-girl:20160524213737p:plain

 

 

参考にした記事

qiita.com

 

 

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

 

以上です。