キリンめも(技術)

記事を書いています #rails #swift #JS #UE4 #unity

Rubyの会17回「メゾット/each/time/map/join  シンボル・ハッシュ ・p関数」

今日から夏休み!!!!!✨

 

今日の進捗です。 

f:id:geta206:20160811104817p:plain

 

agenda

  1. eachメゾット
  2. timeメゾット・mapメゾット
  3. &:
  4. joinメゾット
  5. ハッシュ {} とシンボル :hoge
  6.  p関数

 

1. eachメゾット

繰り返し処理を順に繰り返し全ての処理を行うためのメゾット

書き方が2通りあるよ!!(書いてある意味は同じです。)

 

コードの意味: 1から5までの数字を繰り返し2を i とかけたものを表示する

 

  •  (1..5)  範囲オブジェクトに対してeachメゾットを読んでいる。
  •   | i |          ブロックを操作するときには変数を指定しないといけない。 

                            i(ローカル変数)を使用してブロックを操作し代入する。

                     |i|(ブロック変数)の名前は なんでもおk。例 | hoge |

 

 1.一行でコードを書きたいとき

  ブロックを使うとき{}で囲まないといけないけど  do  end も使用できる。

>> (1..5).each { |i| puts 2 * i }
2
4
6
8
10
=> 1..5

 

2.2行以上のとき

>> (1..5).each do |i|
?>   puts 2 * i
>> end
2
4
6
8
10
=> 1..5

 

参考元  eachメソッド - Qiita

------------------------------------------------------------------------------

2. timeメゾット ・mapメゾット 

 

  •  timeメゾット 同じ内容を繰り返して表示  

  コードの意味: "Betelgeuse!"を3会表示させる

>> 3.times { puts "Betelgeuse!" }   # 3.timesではブロックに変数を使用していない
"Betelgeuse!"
"Betelgeuse!"
"Betelgeuse!"
=> 3

 

  • mapメゾット   配列、範囲オブジェクトを適応させる。

   {}の中身に適用させたい処理をかく。

>> (1..5).map { |i| i**2 }          # 「**」記法は冪乗 (べき乗) 
=> [1, 4, 9, 16, 25]
>> %w[a b c]                        # %w で文字列の配列を作成
=> ["a", "b", "c"] >> %w[a b c].map { |char| char.upcase } => ["A", "B", "C"] >> %w[A B C].map { |char| char.downcase } => ["a", "b", "c"]

 

 省略した書き方(上と構文は一緒)

>> %w[A B C].map { |char| char.downcase }
=> ["a", "b", "c"]
>> %w[A B C].map(&:downcase) => ["a", "b", "c"]

        &:  は char(範囲オブジェクト)を短縮するためのもの。 

 

------------------------------------------------------------------------------

5. joinメゾット

 文字列をまとめて表示する。

arr = ["hello", "world", 123]
puts arr.join(", ")
puts arr.join
hello, world, 123
helloworld123

 

 

参考引用 join (Array) - Rubyリファレンス

------------------------------------------------------------------------------

6. ハッシュ { }  と  シンボル :hoge

       ハッシュ{ }  配列を作る。

   注意 

  • 並び順は保証されない。
  • []とは別物。

 

>> user = {}                          # {}は空のハッシュ
=> {}
>> user["first_name"] = "Michael"     # キーが "first_name" で値が "Michael"
=> "Michael"
>> user["last_name"] = "Hartl"        # キーが "last_name" で値が "Hartl"
=> "Hartl"
>> user["first_name"]                 # 要素へのアクセスは配列の場合と似ている
=> "Michael"
>> user                               # ハッシュのリテラル表記
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}

 

 別の記述方法  こっちの方が簡単!

>> user = { "first_name" => "Michael", "last_name" => "Hartl" }
=> {"last_name"=>"Hartl", "first_name"=>"Michael"}

 

シンボル : hoge     軽量な文字列。

   比較してみましょう。

>> "name".split('')
=> ["n", "a", "m", "e"]

 

  注意 

  • -(ハイフン)は使用できない  _(アンダーバー)は使用できます。
  • 数字が使えない
NoMethodError: undefined method `split' for :name:Symbol
>> "foobar".reverse
=> "raboof"
>> :foobar.reverse
NoMethodError: undefined method `reverse' for :foobar:Symbol        

 

------------------------------------------------------------------------------

7. p 関数

p関数    

  • 引く数の内容を文字列と数値を使い改行と順番に主力。
  •  .inspect  と意味はほぼ同じ

   要はそのまま表示してくれる。

p("Hello Ruby \n")
p(1234)
  #=>"Hello Ruby \n"
  #  1234

 

参考文献 【Ruby】表示メソッドについて(print,puts,p) - TASK NOTES

------------------------------------------------------------------------------

7. まとめ

 

  1. each    繰り返し処理をする。 (1..5).each
  2. time     回数表示 2.time
  3. map     値に要素を反映させる
  4. &:      変数を省略できる (&: hogehoge)
  5. join         要素を統合してひとつの文字列にする  
  6. ハッシュ {}              配列をつくる
  7. シンボル :hoge     軽量な変数
  8.  p関数   そのまま表示。

 

今日あった出来事

>> params = {}# 'params' というハッシュを定義 ('parameters' の略)
=> {}
>> params[:user] = { name: "Michael Hartl", email: "mhartl@example.com" }
=> {:name=>"Michael Hartl", :email=>"mhartl@example.com"}
>> params
=> {:user=>{:name=>"Michael Hartl", :email=>"mhartl@example.com"}}
>>  params[:user][:email]
=> "mhartl@example.com"

 

emailのデータを表示するコードが書かれれているのですが、

お題でnameはとれるかな…?と言われて

>>  params[:user]

ってかいたらとれると思っていたんだけど

結果

=> name=>"Michael Hartl", :email=>"mhartl@example.com"

で値を2つ取れてた。emailいらない…

・・・・

いろいろ試した結果

こうするとnameだけ値を取ることができる。

>>  params[:user][:name]

userの中のnameってことかと納得。PHPと取得の仕方一緒なのに・・

 

初心者脱却したい…( ;  ; )

 

今回の宿題

ハッシュとシンボルを覚えてくる。

------------------------------------------------------------------------------

Rubyの会16日目「メゾット・範囲演算子」 

最近サイコブレイクにはまってます(бвб。)

 

進捗です。

f:id:geta206:20160807123946p:plain

 

agenda

  1. string_message
  2. split
  3. ! 破壊的メゾット
  4. 配列・範囲演算子
  5. その他の機能

 

1.string_message

  引数をひとつ取り、引数が空かどうかを判定するメッセージを返すメゾットを作ります。

 

>> if str.empty?

>> "It's an empty string!"

>> else

>> "The string is nonempty."

>> end

>> end => :string_message

>> puts string_message("foobar") The string is nonempty.

>> puts string_message("") It's an empty string!

>> puts string_message It's an empty string!

 

   メゾットの引数を省略することもできる。

def string_message(str = '')

 

   この上記の変数はデフォルトなので書いても書かなくても使用されます。  

 

ーーーーーーーーーーーーーーーーーーーーーーーーーー

2.split  文字列の分割

 

 split('')の中に(’x’)と指定すると x で区切ることができるという意味。

   下の例は  ,  で分割される。

文字列

引数patternに文字列を指定した場合は、その文字列を区切り文字とします。

s = "hello,world,ruby"
p s.split(",")
["hello", "world", "ruby"]

   join (Array) - Rubyリファレンス

   

--------------------------------------------------------

 

3.破壊的メゾット !

Rubyには、非破壊的メゾットと破壊的メゾットがある。

 

  • 破壊的メゾットとは aの状態に影響が及ぼされるもののことをいう。

                  オブジェクトが変更される。

  • 非破壊的メゾットは aに影響がないもの。

             オブジェクトが変更されない。

 

a = "bar"

 

a.chop   # "ba"

a         # "bar" : 変わらない

a.chop!   # "ba"

a         # "ba"  : 変わる

 

        非破壊的メゾット一覧

>> a => [42, 8, 17]

>> a.empty? => false

>> a.include?(42) => true

>> a.sort => [8, 17, 42] 

>> a.reverse => [17, 8, 42]

>> a.shuffle => [17, 42, 8]

>> a => [42, 8, 17]

 

破壊的メゾットの使用例

メゾットの後ろに ! をつけると作れます。

>> a => [42, 8, 17]

>> a.sort! => [8, 17, 42]

>> a => [8, 17, 42]

 

qiita.com

 

------------------------------------------------------------------------------------

 

 6.配列・範囲演算子

  • 配列     特定の順序を持つ要素リスト
  • 範囲演算子  同じかどうかを比較する計算

       

   Ruby ではゼロオリジンを採用しています。(0からスタートする)

 >> a = [42, 8, 17] => [42, 8, 17]

 >> a[0] # Rubyでは角かっこで配列にアクセスする => 42

 >> a[1] => 8

 >> a[2] => 17

 >> a[-1] # 配列の添字はマイナスにもなれる! => 17

   配列要素にアクセスするには角かっこを使用する。    

   

  なんと配列の数字を取り出すとき、英単語でも取り出せる…!(衝撃)

>> a # 配列「a」の内容を確認する => [42, 8, 17]

>> a.first => 42

>> a.second => 8

>> a.last => 17

>> a.last == a[-1] # == を使って比較する => true     

  

  7.その他の機能

 length メゾット  文字の数を数える

>> x = a.length # 配列も文字列と同様lengthメソッドに応答する => 3

>> x == 3 => true

>> x == 1 => false

>> x != 1 => true

>> x >= 1 => true

>> x < 1 => false

 

 sortメゾット  並べ替える

   配列ソート(昇順)

a = ["Red", "Red", "Blue", "Green"]
p a.sort!
⇒ ["Blue", "Green", "Red", "Red"]

 

   配列ソート(降順)

a = ["Red", "Red", "Blue", "Green"]
p a.sort.reverse!
⇒ ["Red", "Red", "Green", "Blue"]

 

 pushメゾット 要素を追加する

>> a.push(6) # 6 を配列に追加する => [42, 8, 17, 6]

>> a << 7 # 7を配列に追加する

  => [42, 8, 17, 6, 7]

>> a << "foo" << "bar" # 配列に連続して追加する

  => [42, 8, 17, 6, 7, "foo", "bar"]

 

 joinメゾット 文字列を統合させる。(splitと逆)

>> a => [42, 8, 17, 7, "foo", "bar"]

>> a.join # 単純に連結する

=> "428177foobar"

>> a.join(', ') # カンマ+スペースを使って連結する

=> "42, 8, 17, 7, foo, bar"

 

 to_a     %w    文字や数字の配列に変換する

>> 0..9

=> 0..9

>> 0..9.to_a# 配列でない数字の9にto_aを実行してしまった NoMethodError: undefined method `to_a' for 9:Fixnum

>> (0..9).to_a # 丸かっこを使って明示的に範囲クラスのto_aメソッドを呼ぶ

=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

   2番目のエラーはto_aを呼ぶときは0…9 を (0…9)かっこを追加する必要がある。

  

  文字にも指定できる!!!!!!

>> ('a'..'e').to_a

=> ["a", "b", "c", "d", "e"]

   

  同様に%w配列が作れます!!

>> a = %w[foo bar baz quux] # %wを使用して文字列の配列に変換

=> ["foo", "bar", "baz", "quux"]

>> a[0..2] => ["foo", "bar", "baz"]

 

          便利機能  -1     配列の長さを指定できる。

   メリット 
  • 配列の長さがわからなくても配列の最後の要素を指定できる。  
  • 一度に全てを選択することができる。

  

>> a = (0..9).to_a => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>> a[2..(a.length-1)] # 明示的に配列の長さを使って選択

=> [2, 3, 4, 5, 6, 7, 8, 9] >> a[2..-1] # 添字に-1を使って選択

=> [2, 3, 4, 5, 6, 7, 8, 9]

 

Rubyの会15回目「文字列 ・rubyメゾット」

そろそろ夏休み(*'ω'*)!

 

今日の進捗です。

f:id:geta206:20160728153820p:plain

 

 agenda

  1. #{}
  2. スペースの仕方・違いについて #{}  変数+変数
  3. 記号の説明 [ \n  ,  ' '  ," " , <?,   ||  ]
  4. 変数 length  empty?
  5. s.include?("foo")
  6. nil  ・ !!(バンバン)

  7. まとめ

 

1.# {}

String - Rubyリファレンス

  • ”  ”の中に変数の値を表示したいとき使う。

   ほかにも\を使った例↓

エスケープシーケンス説明
\a ベル
\b バックスペース
\e エスケープ
\f 改行ページ
\n 改行
\r 復帰
\t 水平タブ
\v 垂直タブ
\" ダブルクォート(")
\' シングルクォート(')
\\ ¥マーク

 

2.スペースの仕方・違いについて

変数を2つ使ったときのスペースの開ける方法が2種類あるらしい。

  1.  ”#{変数名}  #{変数名}”
  2. 変数名+”  ”+変数名

どちらを使っても大丈夫らしいが、主に

  1. View 
  2. Controler と model 

で使われる。

読みやすさは2なのでこれから使うときは2で頑張る

 

3.記号の説明  \n    ' '    " " <?  ||

  • n\    改行 バックスペースは¥マークを押すとでる。
  • ” ”と’ ’の違い。’ ’は変数と改行は使えないが、” ”は使える

 

>> '\n'       # 'バックスラッシュ n' をそのまま扱う
=> "\\n"

  反映されていない場合¥が前に表示される。

  反映が成功していた場合はそののまま表示される。

 

  • <? まだ記述終わっていないサイン。
  • || または 

Rubyの基礎知識 - - Railsドキュメント

 

 4.変数 length empty?

  • length  長さを知るために使う。
  • empty? からかどうかを確かめる。

 

nil? すべてのオブジェクトに定義されている。nilのときのみtrueを返す。
empty? 文字列の長さが0のとき、または配列が空のときにTrueを返す。もちろん数値には定義されていない。
blank? railsの拡張。nil, "", " ", [], {} のいずれかでTrueを返す。

 

qiita.com

 

  

5.s.include?("foo")

  変数.include?("foo")  の意味があやふやだったので確認($・・)/~~~

  注:タイトルに書かれている s は変数のことです。

   教科書の一部抜粋してきました。

>> s = "foobar"

>>
if s.nil?
>> "The variable is nil"
>> elsif s.empty?
>> "The string is empty"
>> elsif s.include?("foo")
>> "The string includes 'foo'"
>> end => "The string includes 'foo'"

 

 この部分の説明します。

>> elsif s.include?("foo")

 sという関数の中に”foo” という文字が入ってるかを聞いています…!

 

6.to_s 

   配列を文字列にする。

to_sメソッドは、配列を文字列に変換します。Ruby 1.8では、配列の各要素をto_sメソッドで文字列に変換して連結した文字列を返します。組み込み変数$,に区切り文字を設定すれば、区切り文字を間に入れて連結します。

array = ["apple", 123, Object.new]
puts array.to_s
apple123#<Object:0x3c84

ref.xaio.jp

 

6. nil  ・ !!(バンバン)

 

Rubyにおいてnilは特別なオブジェクトです。Rubyのオブジェクトのうち、オブジェクトそのものの論理値がfalseになるのは、false自身とnilの2つしかありません。なお、「!!」(「バンバン (bang bang)」と読みます) という演算子を使うと、そのオブジェクトを2回否定することになるので、どんなオブジェクトも強制的に論理値に変換できます。

 

 

その他の Rubyオブジェクトは True です。

>> !!0
=> true

 

なので 0は false で 1などは Trueで返される。

  •  Rubyは nil と false  だけ false を使うよ!

     その他はTrueで表示される。

  

 

7.まとめ

今回は主にRubyについて学びました!楽しいz

 

新用語

  • unless   条件分が偽の場合に使われる。

 

  if文みたいに使える.....!

unless 条件式 then
  条件式が偽の時に実行する処理
else
  条件式が真の時に実行する処理
end

参考所 ↓

www.rubylife.jp

 

 

おまけ

この記事も読んで少し理解できたのがうれしい(*‘ω‘ *)!

qiita.com

おわり

 

 

 

Rubyの会14日目「#・nil・rails cの文字化け」

▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂うわあああああああ(心境)

 

今日の進捗です。

f:id:geta206:20160725124433p:plain

この2つの他に「文字化けの直し方」についても記載します。

agenda

  1. 復習   [  full_title(yield(:title))  ]
  2. エラーの起こる理由 test
  3. nil
  4. コメントの書き方。 #
  5. 文字化け問題。[rails](解決済)
  6. まとめ

1.復習[  full_title(yield(:title))  ]

   4行目(黄色い部分)に注目。

 

<title><%= full_title(yield(:title)) %></title>

上の意味がわからない場合は前の記事に戻る。前回の「引数」の復習。

 

rails concole

rails console(コンソール)とは、rails の環境を読み込んだ状態でrubyコードを実行できるツールです

 

-----------------------------------------------------------------------

2.エラーの起こる理由 test

エラーは自力で直せた(教科書通りすすめたらできた

のだが、理由がわからなかったので記載する。

リスト4.5: RED
$ bundle exec rake test
3 tests, 6 assertions, 1 failures, 0 errors, 0 skips

エラーを治す方法

「home」画面

<% provide(:title, "Home") %>
<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="http://www.railstutorial.org/">Ruby on Rails Tutorial</a>
  sample application.
</p>

 

<% provide(:title, "Home") %>

部分を消去する。こうすることによりtestがパスされる為エラーがなくなるらしい。

最初何言っとるんじゃってなったので細かく説明していく。

少し前に戻る。

 

このtestページの意味を考えると理由は簡単だった。

テスト4.4: Homeページのタイトル確認用にテストを更新する REDtest/controllers/static_pages_controller_test.rb
require 'test_helper'

class StaticPagesControllerTest < ActionController::TestCase
  test "should get home" do
    get :home
    assert_response :success
    assert_select "title", "Ruby on Rails Tutorial Sample App"
  end

  test "should get help" do
    get :help
    assert_response :success
    assert_select "title", "Help | Ruby on Rails Tutorial Sample App"
  end

  test "should get about" do
    get :about
    assert_response :success
    assert_select "title", "About | Ruby on Rails Tutorial Sample App"
  end
end

 

 まずはhomeのテストから

test "should get home" do
    get :home
    assert_response :success
    assert_select "title", "Ruby on Rails Tutorial Sample App"
  end

   ruby onRails Tutorial Sample App と表示さればok

 

 それに対して  help と  about  は

 test "should get help" do
    get :help
    assert_response :success
    assert_select "title", "Help | Ruby on Rails Tutorial Sample App"
  end

  test "should get about" do
    get :about
    assert_response :success
    assert_select "title", "About | Ruby on Rails Tutorial Sample App"
  end

 縦棒が入っている!(要は表示の仕方が違う)だから provide の部分を消さないといけなかった。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

3.nil

何もない。ブランクという。

nil は決してないという意味。nill

nilは存在しないという意味。

対して ""は「何も無い」が存在している。空白の存在。

book.nil?
もしbook自体が存在しないなら、上記はtrueを返す。
nilに近い関数達
 enpty?     中身の値が空なのかを調べる(入れ物はある前提)trueかfalseで値を返す。
 blank? nil?とempty?を足したもの。中身は空なのかと,入れ物自体は存在するのか判定。

 -------------------------------------------------------------

4. コメントの書き方 ruby

初めて知ったのも何個かあった。

"ハッシュマーク" "オクトソープ"

Rubyでコメントを書くにはいくつか書き方があります。

  • # コメント
    -- 1行コメントは「#」のあとに書く

  • =begin
    コメント
    =end
    -- 「=begin」から「=end」の間がコメントになる

  • __END__
    -- この行以降すべてがコメントになる

 

qiita.com

おまけ rails c で色々試した。

文字列の結合
>> "foo"+"bar"
=> "foobar"
 
文字列の中で変数を使う方法
>> "#{first_name} Hartl"
=> "Michael Hartl"
 
1  空白を入れる
>> first_name + " " + last_name
=> "Michael Hartl"
 
2  空白入れる
>> "#{first_name} #{la}"
lambda     last_name
>> "#{first_name} #{la}"
lambda     last_name
>> "#{first_name} #{last_name}”

puts と print の違い

文字列の出力することは同じだが、改行するかしないかの違い。 

puts  実行結果を改行する

print "hoge"
hoge=> nil

print  改行しない

puts "hoge"
hoge
=> nil

print で改行表示させる方法
>> print "foo\n"
foo

[Ruby]putsとprintの挙動の違いを確かめてみる : THINK PINK

-----------------------------------------------------------

 

5.文字化け問題[  rails  ](解決済)

  4.2.1 の部分

$ rails console
>> 17 + 42   # 数の加算
=> 59

 #の後が文字化けしてしまった。。

 

 rails c文字化けの直しかた

qiita.com

これで直ると思ったが、失敗。👆

libreadline rails

qiita.com

どうやら、rb-readlineが必要らしいので、Gemfileにgem 'rb-readline' を追加してインストール

解決しました。

6.まとめ

使用したコマンド

  • Ctrl + D     コンソール終了 

 

Railsの会13日目「3章 test・まとめ / 4章関数作成」

 

今回の進捗です。\\\└('ω')┘////

注意 : 3.4.4 〜スタート。3.6(演習)〜 3.7.2  までは飛ばしてます。

 

f:id:geta206:20160719170258p:plain

agenda

  1. 復習
  2. helloアクション
  3. 3章のまとめ
  4. 第4章 ヘルパー
  5. 4章まとめ

 

1.復習

おさらいです!

/app/aprication.html.erb にhtml js とか記載される。

 

$ rails routes         受け取ったURLを認識、適切なコントローラ内にアクションで割り当てる。

      よくデバッグ ・ルーティング作成 に使われる

 

⚠️そのままではRails環境を読み込むため遅い。

rails routes を高速にする方法

  • pryとpry-rails gemがインストールされているなら、rails consoleを起動しておいてshow-routesを実行
  • spring gemがインストールされているならspring rake routesとすれば2度目以降から高速になる
  • dev環境が起動中ならhttp://localhost:3000/rails/infoを参照する (Rails 4)

 

Rails のルーティング | Rails ガイド

 

2.helloアクション

ページを作るとき必ず設定しないといけない。

  • ルート設定 [  config/routes.rb  ] 

 get 'static_pages/home'

  • ApplicationController [  app/controllers/static_pages_controller.rb  ]
def hogehoge
    .
    .
    .
  end
 おまけ   $ ps aux        grep spring

ps  プロセスを表示

動作が遅い時に使う。Railsではテストが動かない時(テスト系)で使用する。

a    自分以外のユーザプロセス

u    User名と開始時間

x    制御端末のないプロセス情報

ps ax  システム上全てのプロセス表示

 

    注 ps -aux はxという名前のuserが所有するすべてのプロセスを表示。

   xというuserが存在しなければ、 ps auxというコマンドと解釈し警告する。

  ps - コマンド (プログラム) の説明 - Linux コマンド集 一覧表

 

grep 文字列検索      (テキストファイルとか正規表現

grep【コマンド】とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

spring      railsのアプリケーション用プリローダ(待ち時間を視覚化したもの)。マイグレーション(依存しているアプリケーションを再利用して新しい環境に移行)するとき、railsを再起動しなくていいようにする。

springの特徴

・開発環境が高速になる

・springサーバが起動される。設定を監視、再ロードする。

rails [console  runner  generate  destroy  ]と rakeが対象

自動起動・終了される

・デフォルトではspringが使われないので、有効にする必要がある。

 

  spring有効にする方法

 rails newしたプロジェクト内で実行

$ bundle exec spring binstub --all

bin/springが新規追加され、bin/rails と bin/rakeにspringをloadするコードが追加。

spring を使ってテスト高速化 - Qiita

Rails 4.1以降のコンソールコマンドは必ず bin/ を付けなきゃいけないの? - Qiita

 

3. 3章まとめ

  • gemインストールリモートへpush、プロダクション(本番)環境を行った。
  • コントローラを新規作成するrailsコマンドは[ generate  /controller / contorollerName]
  • コントローラー名はキャメルケース
  • アクション名はスネークケース
  • 新しいルーティングは config/routes.rb ファイルで定義する。
  •  自動化テスト作成(テスト駆動開発 レッド、グリーン、リファクタリングサイクル)
  • Railsレイアウトはアプリケーションページの共通部分をテンプレートに置くと重複させなくて済む。
 おまけ  エラーまとめ
1  引数の数が間違っている(呼び出しa とメソッゾの引数b) (a for b)

 0 for 1 (1 個であるべきところに0 個来た)という内容になっている。

f:id:geta206:20170311195955p:plain

Rubyのエラーメッセージwrong number of arguments (a for b)の意味 - Qiita

 

2   xcode 古い! (Xcode 開いてupdateすればok)

The file "/usr/include/iconv.h" is missing in your build environment,
which means you haven't installed Xcode Command Line Tools properly.

To install Command Line Tools, try running `xcode-select --install` on
terminal and follow the instructions.  If it fails, open Xcode.app,
select from the menu "Xcode" - "Open Developer Tool" - "More Developer
Tools" to open the developer site, download the installer for your OS
version and run it.

Agreeing to the Xcode/iOS license... のエラーがでた時の対処法 - Qiita

Mac で Rails を使う - the glue

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

第4章

4. ヘルパー

基本はviewの補助として使用する。

メディアタイプ Rubyの4つの概念

  1. stylesheet_link_tag     Rails組み込み関数。このことを(ヘルパーという)

  2. カッコを使わない関数の呼出し

  3.  シンボル ソースでは文字列に見えるけど内部は整数として扱われる。例

my_name.object_id # => 8848520

               http://melborne.github.io/2008/08/02/Ruby 

  1.  ハッシュ   連想配列    RailsのHashの使い方 

           配列と同じく複数の他のオブジェクトを管理するために使うオブジェクト。

ーーーーーーーーーーーーーーーーーーーーーーーーーーー

 この行を変更します…!

<%= yield(:title) %> | Ruby on Rails Tutorial Sample App

 これを下のように変更。

<% provide(:title, "Home") %>

 

ーーーーーーーーーーーーーーーーーーーーーーーーーー

  provide関数とは

provideヘルパーでlayoutにパラメータを引き渡す

内容

layoutに動的にパラメータを引渡したいような場合に
provideヘルパーを利用します。

呼び元

- yield(:key)

呼び先

- provide(:key, value)

tbpgr.hatenablog.com

もしprovideを消去すると・・・

 | Ruby on Rails Tutorial Sample App

と表示される。

上の行の「|」を消す!

 

リスト4.2: full_titleヘルパーを定義するapp/helpers/application_helper.rb
module ApplicationHelper

  # ページごとの完全なタイトルを返す
  def full_title(page_title = '')
    base_title = "Ruby on Rails Tutorial Sample App"
    if page_title.empty?
      base_title
    else
      page_title + " | " + base_title
    end
  end
end

上記のコードを書いて

<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>

   を下記に変更

<title><%= full_title(yield(:title)) %></title>

 その他にも application.html.erb に書かれている内容はけす(コードの重複をなくす)

      static_pages / home.html.erb 

      static_pages / help.html.erb 

      static_pages / about.html.erb 

これで完成()

 

5. 4章まとめ

今回行ったこと

  • root  / メインサイト  get / サブサイト
  • Hello アクション(root設定とメゾットの定義)
  • ヘルパー 関数作成

 

宿題

基礎をもう一度。(toy_app)作成

http://railsdoc.com/rails_base