どうも!chuckです。
いよいよ今回から動的ページの作成に入ります。今回作るのはユーザーのシンプルなプロフィールページですが、学ぶことがたくさんありました。
7章 ユーザー登録
7−1ユーザーページの作成
デバッグ表示
ビューに以下のコードを埋め込むことで、デバッグに有効な表示が得られます。
Rails serverを立ち上げてビューを表示すると、以下のように。
描画されるページの状態を把握するのにGoodです。
Railsの3つの環境
今までも出てきたけど、改めてまとめ。
Railsには開発、テスト、本番の3つの環境がある。Railsオブジェクトのenvを実行すると、どの環境にいるのか返してくれる。
Restアーキテクチャ
作成、表示、更新、削除が可能なリソースとしてデータを扱うこと。
ちなみにHTTPで言うところのPOST,GET,PATCH,DELETE。
id=1のユーザを表示することはuser/1をGETリクエストすること。これはRailsではshowアクションとして実行できる。なるほど!
ルーティング(config/route.rbの書き換え)
上記のリクエストを可能にするにはroute.rbに1行追加する必要がある。
2行目のresources :usersを追加することで以下のルーティングが可能となる。
showアクション
ルーティングの準備ができたので、showアクションを実装する。とは言え、以下の記述を追加するだけ。
一方でこちらがビュー(仮)
@userインスタンス変数を渡している。(たぶん)
デバッグ表示でもきちんとIDが渡ってきていることが分かる。
ファクトリー
ユーザーのモデルオブジェクトを作成する。データ・ソースを自動生成してくれる?(ここらへんは理解が浅い)
そしてfactory girlが便利。ここではactive recordよりも適材らしい。※factory girlはRubyGemなのでGemfileを改変してbundle installする。
Gravater
プロフィール画像の設定がカンタンにできちゃうツール。gravaterヘルパーメソッドを呼び出して使う。(ヘルパーはたしか便利なカスタム関数って感じだったかな)
もちろんヘルパーは自分で書く。
麻薬っぽい名前のMD5というのは暗号化に必要なもの。hexdigestとdowncaseで16進数の小文字に変換している。
ちゃんと画像が表示されてる!
7−2 登録フォームを作る
まずデータをリセットする。全消しは以下のコマンドが有効。
システムによってはprepareが必要なこともある。
小話
その昔テストはかなり苦痛なものだったらしい。全部を手動で行う必要があり、システムに変更があるたびに同じテストを実施しなければならなかったとか。(想像しただけでもめんどくさい…)
それを自動でやってくれるRSpecとかCapybaraってスゴいよね!(というありがたいお話がチュートリアルの途中に書いてあったので書いておきます)
テスト
というわけで以下、テスト関連の項目。
- click_button ボタンを押してページ遷移をシミュレーションできる
- fill_in フォーム送信に際してPOSTの内容というかInputタグの中身を埋めてくれる
- expect 読んで字の如く。to,not_toで期待する内容を書く。trueになればテストが成功する
ユーザが無効のテスト
有効のテスト
ただし今のままではテストは失敗する。
ビューの作成
form_forヘルパーメソッドを利用する。
ここでのfはformのこと。HTMLのインプット要素に対応する何かが呼ばれる。
もちろん、これを実行するにはActionで追記が必要。
こうすることでHTML側にデータが渡る。らしい。
そして生成されたFormタグがこちら。
フォーム送信の仕組みをもっと詳しく
先ほどのHTMLにて、他のInputタグは以下のとおり。
name属性の中身はuserハッシュのemail属性を指定している!
user_params
外部メソッド。コントローラ内だけで処理されるので安全、らしい。またprivateを指定しておく。
errors.full_messages
エラーメッセージを取得できる。
これをHTML側で実装するとこうなる。
shared/は慣習的なディレクトリであり、その中のerror_messagesというパーシャルを利用している。
つまりそれも自作する必要がある。
any?メソッド
emptyの逆で、1つ以上心当たりがあればTrueを返す。
puluralizeメソッド
英単語を場面に応じて複数形に変換してくれる。しかも不規則変化の単語まで。えっ、すごくない?
Redirect
ユーザーの登録が終わった後に、ユーザーページに飛ばす必要がある。
そのための記述が「redirect_to @user」
flash
1度だけ表示を行う特殊な変数。
SSLを有効にする
config/environments/production.rbの以下をコメントアウトする。
このように。
以上で7章は終わり。ユーザー登録機能はもちろんのこと、テストやRailsの機能についてより詳しく学ぶことできた。
次回は第8章、サインイン・サインアウト。
では(`・ω・´)ゞ