20201017_アウトプット
学んだこと(5時間半)
なぜビュー反映させる時に、raw(文字列)をする必要があるの?
クロスサイトスクリプティング(XSS:Cross Site Scripting)が関係していた。
クロスサイトスプリクティングとは、フォームなどのユーザーが自由に入力できる場所に、JavaScriptやhtmlの罠を仕掛け、罠のスプリクトを実行した人の個人情報が盗んだり、悪意のあるソフトウェアに感染させたりする仕組みのこと。
それを防ぐには、ユーザーが自由に記入できる場所において、悪意のあるプログラムを書けないようにする。
書けないようにするために、入力値を制限する方法や、エスケープ処理といって特殊文字(<・>・&等)をただの文字列にする必要がある。
エスケープ処理に使えるのがrawメソッド。「<」「>」「&」のような文字を
「<」「>」「&」
のような無害な文字列に置き換えることができる。
こちらの記事が分かりやすく勉強になりました。
(一部、引用させていただきました。)
viewを深堀り
form_withやlink_to等、ビューで使える「ヘルパーメソッド」の戻り値は、HTMLの要素(文字列)になるよ
すでに用意されているヘルパーメソッド以外にも、自作することができるよ
その時に、「Helper」と呼ばれるモジュールを活用しよう(この中に、繰り返し同じ処理を記述することによって、ビューの可読性が上がるよ)
【application_helper.rbの記述】 module ApplicationHelper def sample # sampleというヘルパーメソッドです end end
【index.html.erbの記述 メソッド名書くだけでOK】 <%= sample %>
忘れていたcollectionとmemberの違い
そもそも、collectionとmemberはルーティングに設定するもの
ワード検索を設定したい時は入れ子構造で設定するよ(入れ子構造で設定するのは、今回7つのアクションがあってのワード検索だから)
アクション | rails routesで見たときの違い |
---|---|
collection | :idつかない |
member | :idつく |
つまり、検索ヒット後に、:id指定が必要なページにいくのかどうかで決める。
controllerを深堀り
コントローラーは「リクエストを受け取り、レスポンスを返すこと」が仕事なので、細かいデータの処理を行う仕事は、モデルに任せよう(曖昧検索・ワード検索・DBからのデータ取得等)
モデルに任せる以外にも「サービスクラス」という概念もあるよ
サービスクラスとは、モデルに記述処理を切り出せる機能のことだよ
ブラウザにおける情報の一時記憶
セッションとは、Webサービスにおいて情報を一時的に記憶しておく仕組みだよ(買い物のかご情報など)
コントローラーにハッシュに値を追加するような記述で使用できる(クッキーストアにハッシュ形式で保存される)
実はdeviseにその機能が実装されており、だからログイン時に前に記入した情報が残っていた
class TestsController < ApplicationController def index session[:sample] = 1 end end
クッキー(Cookie)とは、「ブラウザ」が持っているデータを保存できる領域のこと(データベースじゃないよ!!)
クッキーストアとは、Ruby on Railsでセッションを用いる際の、デフォルトの保存先のこと。この保存先はセッションストレージと呼ぶことが一般的。
レスポンスの復習
積み残し(復習したいこと)
感想
教室に行くと集中できる。理由を考えたところ、人とのスペースが十分にあることと、椅子の座りごごちがいいことと、プログラマーを目指す仲間とたまに話して息抜きできるためだと思う。
今日はオンラインでしか会ったことのない方と会えて嬉しかった。個人アプリを見せてくれた。スマートなところがで素敵で、MVCを活かした設計だった。
共通点の多い、私と同じ悩みを持っている方とお話しできて嬉しかった。勇気をもらえた。悩みとは、どんな時も「勉強しなきゃ‥」と心のどこかでずーっと感じていたり、上手にリフレッシュできないという悩み。
上記悩みについて、最低限の時間を目標として、それ以上の時間はボーナスタイムにした方が自分にはあっているのかも。(そうすることで、それ以外の時間は休んでもいいんだよ、と自分を許すというか)
オブジェクト指向に関する概念をもっと知識を深めたくて、隙間時間に「オブジェクト指向でなぜつくるのか(平澤 章 著)」の本を読み始めた。まだ始めの部分だが、以前は「機能」中心に作っていて、更新や手直しをすることがとても大変だったこと。そこからパーツ分けをするようになりオブジェクト指向のおかげで「楽になっていった」こと。まだ始めの部分だけど「なぜ」が分かりやすくて、勉強になる。