つまずいたところ
第1章 ゼロからデプロイまで - Railsチュートリアル
heroku login
で躓く- ターミナルを覗くとログイン用のURLと
Warning: Cannot open browser.
のメッセージ - URLを開いて、すでに用意してあったHerokuアカウントでログインすると、すんなりログインが終わった
- ターミナルを覗くとログイン用のURLと
演習
2章の演習
- 図 2.11を参考にしながら、/users/1/edit というURLにアクセスしたときの振る舞いについて図を書いてみてください。
- 後述
- 図示した振る舞いを見ながら、Scaffoldで生成されたコードの中でデータベースからユーザー情報を取得しているコードを探してみてください。
models/user.rb
- ユーザーの情報を編集するページのファイル名は何でしょうか?
views/users/edit.html.erb
1.
- ブラウザから「/users/1/edit」というURLのリクエストをRailsサーバーに送信する
- 「/users/1/edit」リクエストは、Railsのルーティング機構によって、Usersコントローラ内のeditアクションに割り当てられる
- editアクションの前にset_userアクションが実行され、「指定のユーザをとりだせ」(User.find(params[:id]))と問い合わせる。この場合はユーザID: 1
- Usersモデルは問い合わせを受け、ユーザID: 1のユーザw-をデータベースがら取り出す
- データベースから取り出されたユーザーをUserモデルからコントローラに返す
- Usersコントローラーは、ユーザーを@users変数に保存し、editビューに渡す
- editビューが起動し、ERBを実行して、HTMLを生成する
- コントローラは、ビューで生成されたHTMLを受け取り、ブラウザに返す
editアクションの中身がわからない
例としてあげられているindexアクションだと、
def index @users = User.all end
で、editは
def edit end
だけ。
users_controller.rbをよく見ると、頭のほうで
before_action :set_user, only: [:show, :edit, :update, :destroy]
と定義されている。
private # Use callbacks to share common setup or constraints between actions. def set_user @user = User.find(params[:id]) end # Never trust parameters from the scary internet, only allow the white list through. def user_params params.require(:user).permit(:name, :email) end
パラメータで渡されたユーザーIDで検索する処理が先には入るのか。
進捗
課題
- ブログに書くのだからフォーマットを考えたい
- 演習の答えあわせができてない。そろそろ答えに確信が持てなくなってきた。答え合わせをしたいが……
- 2時間ぐらいが限界。最初の1時間は健全な集中の仕方で、後半はやや自棄になった感じの集中だった。休憩はさんだりしたら、リラックスして挑めるのだろうか?