yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY101> rubyメソッド、railsのお作法について

\ Follow me!! /

f:id:yujiro0320:20190512223713p:plain

はじめに

スクールのカリュキラムも終了し、これからは、復習となっていく。
毎日ある気づきを言語化し、何を学んだかを記載するブログとしていく。
AWSあたりは非同期通信あたりから学びを言語化する時間もなく愚直に課題をこなしていく形であったが、
定着しているスキルが薄いと感じる。

なので、改めて言語化する作業を注力してやっていく事にした。


文字を変換し出力する方法について(Ruby)

問題文

シーザー暗号と呼ばれる暗号があります。これはアルファベットをある文字数分ずらすという暗号方式で、例えば「a」を2文字分ずらす(進める)と「c」になります。
「frqjudwxodwlrq」という文字列があり、これを3文字ずらす(戻す)と復号できることがわかっています。それを実現させるコードを記述してください。

回答

word = "frqjudwxodwlrq"

nums = word.chars

chnage_word = []
nums.each do |num|
  chnage_word << (num.ord-3).chr
end

p chnageword.join

追加で覚えたメソッド

メソッド名 効果 式の例 式の実行結果
chars 文字列を一文字づつ取り出し配列に返す "aaa".chars ["a", "a", "a"]
ord 文字を数値に変換 "a".ord 97
chr 数値を文字に変換 97.chr "a"

ストロングパラメーターに追加で受け取るparamsを追記する(rails

中間テーブルのカラムを追加する時にやや引っかかりがあった。

入力フォームにてカラム名の指定を行うがtag_idsと複数形に記載しないとエラーになる。
実際のカラム名はtag_idなので、少しごっちゃになった。
中間テーブルにて定義したカラムは複数形にすると理解しておく。

colleciton_select :tag_ids, Tag.all,:id, :name, :prompt => "選択してください"

こんなフォームができる

f:id:yujiro0320:20190531154343p:plain


理解していない点

(1)ルビーのインクルメンタルサーチを使った記法