コンパイラかく語りき

import { Fun } from 'programming'

文系プログラマーがRailsでロシア語アプリケーションをつくる⑬ ~ユーザーの新規登録機能の実装~

どうも!chuckです。

今回はユーザーの新規登録を完成させます!(`・ω・´)ゞ

 

chuckwebtips.hatenablog.com

 

例によって、Railsチュートリアルにお世話になります。

あっ、Railsチュートリアルといえば、こちらのブログ様でもオススメされており、やっぱり優れた教材なんだなあと再確認しております。。

ga-chronicle.hateblo.jp

 

 

今回はすこし逆戻りして、Railsチュートリアルの5章を参考にします。

 

1, 登録画面

まずは、新規登録のためのビューを作成。

f:id:chuck0523:20150725092800p:plain

app/views/users/new.html.erb

 

2,コントローラへの追記

f:id:chuck0523:20150725092859p:plain

app/controllers/users/users_controller.rb

newアクションを作成しました!

 

3,ルーティング

f:id:chuck0523:20150725093046p:plain

5行目にsignup(登録)のためのパスを追加しました。…あれ、でも2行目の記述だけで十分な気もする…???

 

表示してみる

まずは/signup でアクセスします。

f:id:chuck0523:20150725093158p:plain

出ました!

 

次に、/users/new でアクセスしてみます。

f:id:chuck0523:20150725093158p:plain

こっちも出る!

 

調べた

えっと、誤ったパスにアクセスしようとするとこのような画面が出ます。

f:id:chuck0523:20150725093330p:plain

このようなパスがあるよーと。なんて親切なんでしょう!(´;ω;`)

 

もっかいconfig/routes.rb

f:id:chuck0523:20150725093046p:plain

僕、これしか設定してない。でも、パスはたくさんある。

ということは、/ (ルート)と /words (単語一覧)と /signup (登録) の3つ以外は全てresources :usersが作成してくれてるんですね!

 

ためしに消したり追加したり

確認のためにresources :usersを消して、代わりに resources :wordsを追加してみます。

f:id:chuck0523:20150725093926p:plain

 

すると、

f:id:chuck0523:20150725094016p:plain

おー!!変わってる!

 

なるほど!resourcesは特定のモデルに対する、HTTPリクエストのパスを用意してくれるんですね!

resources - リファレンス - - Railsドキュメント

 

 

しかし、テストに失敗

ここで一回テストをします。

f:id:chuck0523:20150725094945p:plain

あれ???!エラーだ。

NameErrorとのこと。

 

調べてみると、これが原因でした。

f:id:chuck0523:20150725095039p:plain

spec/controllers/users_controller.rb

そういえば前回、コントローラの作成をUsersではなくUserとミスっていたことが発覚。修正したんですよね。ファイルの中身が単数形のままでした。

UserControllerをUsersControllerと修正。

 

ちゃんとテストが実行されましたヽ(=´▽`=)ノ

f:id:chuck0523:20150725095224p:plain

 

って、エラー出とるやないかい…

 

調べる。

f:id:chuck0523:20150725101108p:plain

visitメソッドなんて無いよ。と言われています。visitとは、あるページへの訪問を再現してくれるテストメソッドです。

 

ググった。

www.oiax.jp

visitってcapybaraのメソッドなんですね!

 

f:id:chuck0523:20150725101238p:plain

Gemfileにcapybaraを追記。2.1.0だと怒られたので、2.2.0を導入。

 

もっかい、テスト。

f:id:chuck0523:20150725101323p:plain

また怒られた…。今度はCapybaraが無いとのこと。

 

ググった。

qiita.com

spec_helper.rbにもCapybaraを使うことを明記せよとのこと。

あっ、たしかRailsチュートリアルでやったっけ。

gistcc97fc9ef67b1e44fb52

こんな感じです。

 

改めてテスト!

f:id:chuck0523:20150725101715p:plain

通った!

 

登録フォームの作成

寄り道してしまいましたが、いよいよ登録機能をつけます!

あっ、ちなみにHome画面にリンクを追加しました。

f:id:chuck0523:20150725102127p:plain

app/views/russian_words/home.html.erb

 

ブラウザで表示すると、こう!

f:id:chuck0523:20150725102322p:plain

 

1,登録フォームのビューを作成

 さて、肝心の登録フォームです。

f:id:chuck0523:20150725103802p:plain

app/views/users/new.html.erb

ここでは、HTMLでいうところのフォームタグとインプットタグを生成しています。

 

2,コントローラの作成

f:id:chuck0523:20150725103908p:plain

app/controllers/users_controller.rb

newアクションに追記します。

 

ブラウザで確認

f:id:chuck0523:20150725104201p:plain

見た目ひどいですねw

 

ちなみに、createアクションを作成していないので、まだ登録は完了していません。

f:id:chuck0523:20150725104337p:plain

 

こちらがcreateアクションを実装したuser_controllerになります。

f:id:chuck0523:20150725105022p:plain

詳しい解説はRailsチュートリアルの第7章をご参照ください(手抜き)

 

いざ!登録

これでユーザー登録のための準備が整いました!登録を行ってみましょう!

f:id:chuck0523:20150725105128p:plain

 

適当に入力します

f:id:chuck0523:20150725105502p:plain

 

そして確定ボタンを押すと…

f:id:chuck0523:20150725105526p:plain

きました!登録が成功して個人ページに遷移しました!やったー!!!ヽ(=´▽`=)ノ

 

まとめ

ユーザー登録機能が完成しました!やりました!これでいよいよWebアプリケーションっぽくなってきました(´;ω;`)

次回はどうしよっかな。ログイン機能を作りたいけど、その前に細かい修正をしたいなあ… あと単語も追加していかないと!とりあえず1,000単語くらいはほしいなあ(´ω`)