#05 URLからのパラメータを使おう(2)

パラメータを利用する際に使えるワイルドカード、正規表現について勉強.

・シンボル以外にも * が使用できる。　
・正規表現を使う場合にはRubyのショートカット「%r{}」を使えば良い。
　変数で使用したい場合は、()で囲ったところがマッチングされて変数で使用できる。

※main.rbのコード削除、追記でやってると逆にややこしいのでドットインストールのレッスンごとにファイルを作ることにした。
#06 ERBテンプレートを使おう

ERBテンプレートを使ってページを表示していく方法について勉強。
※Ruby標準の「erb」で練習。
※Sinatraで使えるテンプレートはSinatraの公式ドキュメントで確認できる。

①HTMLファイルを「get '/'」で出力したい場合は、main.rbの処理部に部分にerb シンボルでファイル名をいれる。

②「views」というフォルダを作成。その中にidex.erbを作成してhtmlを書いていく。

③とりあえず、「Hello World!」を出力。

※先にレッスンごとにファイルを作成することにしたけど、テンプレートで管理出来るかも知れない、と思ったのでmain.rb修正してやっててみる。
#07 テンプレートで変数を使ってみよう

テンプレート内に変数の内容を組み込んでいく方法を勉強。

①変数を反映させたい場合、「@」をつけた変数名を作って値をいれる。

②erbの場合、「%= %」で囲って「@name」と書けば変数の値が表示される。

③ブロックの中にいくらでも変数を定義できる。
「@title」に「lesson07/」といれてタイトルに表示するようにする。

※テンプレートの作り方は、次回の様子なので、とりあえず、main.rb更新で進む。
#08 layout.erbを使ってみよう

テンプレートの共通部分を管理できるlayout.erbについて、その使い方を勉強。

①lesson08ページをindexの下に作成する。
パスは「'/lesson08/」。
②viewsフォルダの中に lesson08 ファイル作成。
③index と lesson08 の共通部分があるので切り出す。
「layout.erb」を作成し共通じゃないところを「<%= yiled %>」と書く。そうすると、それぞれのファイルが反映されるようになる。
④index と lesson08 ファイルの共通部分を削除しちゃう。

テストして成功。

※これで次回のレッスンから、それぞれのパスを増やしていけばいいのでは、ないかと思う。
#09 before/afterフィルタを使おう

すべてのリクエストに対して共通の処理を指定することができるbefore/afterフィルタを使ってみる勉強。

・・・あかん！共通処理とかあるので、テンプレごとにレッスン管理は出来ない!!ということで、やっぱりレッスンごとにファイル増やして行く。
※面倒だけど、コミット見て、後で復習出来るように・・・。
　現時点で少しグチャってるけど Description 読んで未来の自分が理解＆笑ってくれることを祈ろう・・・。

トライ＆エラー、トライ＆エラー・・・ちょっと違うか・・・。

①共通の前処理は「before do」、後処理は「after do」で書いてく。

②例題、共通の変数を使用。
　before do　で変数、定義。
　→　それぞれの処理部に変数書く。
※勿論、変数定義だけじゃなくて色々な処理を書ける。

③例　後処理で、ページの表示が終わったらログに「ページの表示、成功!!」って表示させるようにしてみる。
　→ after do に「logger.info "ページの表示、成功!!"」と書く。

④before do も　after do もリクエストと同じようにパターンを書くことも可能らしい。
　※軽く、色々テストしてみんたけど、何かうまくいかなった・・・。
とりあえず、進む。
#10 helperを使ってみよう

よく使う処理を登録しておけるhelperの機能について勉強。

・helperとは？
　mainファイルやテンプレートファイルでよく使く機能を登録できる、共通メソッドのようなもの
　色々なところから呼び出せるので便利。

*1）helpers do　の中にメッソドを定義すれば使用できる。

*2)　例）ストロングタグをひっつけるメソッドを作成して実装する。

※helpersの中に複数、登録可能。
#11 掲示板アプリを作ってみよう

今まで学習した内容を使って掲示板アプリを作ってみます。まずはデータベースの設定をする。

① とりあえず lesson11.rb　ファイルを作成。
② import.sqlファイルを作成する。
　table: comments
id
body
があるだけの簡単なデータベース。
③ ターミナルでsqlite3コマンドを使って、 bbs.db　を作成。

とりあえず、ここまで。
#12 ActiveRecordを使ってみよう

ActiveRecordを使ってデータベースの設定をしていきます。また画面も作成していきます。

lesson12だけど、lesson11からの追記を確認したいのでlesson11.rbのままで進める。

※オライリーのリーダブルコードを丁度、読んでいる最終なのでコメントでコードの説明をつけるようにしていって、コメントでは表現できないところをDescrptionに書いてく。

index.erbにリスト表記できるようにHTMLを書く。
※前回までの勉強で使用していた
layout.erb
　lesson08.erb
はとりあえず競合したりしてややこしくなりそうなので、消去。
##　一回、整理

rbファイルをレッスンごとに作成しようと思ったが、掲示板アプリの作成が始まり、レッスン単発で実装が終わる感じではなくなって来たので一回、整理する。

【整理内容】
　lesson12までの内容をmain.rbに書きかえ、今までのleesonファイルは削除。

※学習履歴は、ドットインストールのマイページの学習メモか GitHubの履歴で確認はとれるので大丈夫だと思う。
#13 コメントの一覧を表示させよう

画面を完成させたのちにWebサーバーを起動し、動作確認をしていきます。
#14 コメントを投稿してみよう

コメントを投稿するためのフォームを作り、送信された内容をテーブルに登録していく。
#15 コメントを削除してみよう (1)

jQueryのAjax機能を使い、コメントを削除できるようにしていく
#16 コメントを削除してみよう (2)

データベースからコメントを削除する機能を実装し、動作確認をしていく。

main.rb　jQureyで渡された　'/delete'に削除の処理を書く。
データベースと連絡つしている Commentクラスの中を .find（※pramasで取得したID）で探して、
destroyで項目を削除してる、という実装だと思う。
#17 エスケープ処理を施そう

データを表示する際にエスケープ処理を行う方法について勉強していく。

ヘルパーメソッドで
　・エスケープする為のメソッドがRack::Utilsというライブラリの中にあるので読み込む。
　・その中のescape_htmlという機能をalias_method部で h で使えるようにしている。
#17 エスケープ処理を施そう

データを表示する際にエスケープ処理を行う方法について勉強する。

index.erbの出力部に上でmain.rbで定義したヘルパーメソッド　h をつければHTMLのエスケープ処理、完成。

※Webアプリケーションはエスケープ処理が必須。