<DAY101> rubyメソッド、railsのお作法について
学習状況
●学習日数 101日
●学習時間(本日)5時間
●累計学習時間 455時間
●一日あたりの平均学習時間 4.5時間
はじめに
スクールのカリュキラムも終了し、これからは、復習となっていく。
毎日ある気づきを言語化し、何を学んだかを記載するブログとしていく。
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 => "選択してください"
こんなフォームができる
理解していない点
(1)ルビーのインクルメンタルサーチを使った記法