Rails Tutorial 2章で沼ったのでメモ
Rails 5.1(第4版)
rails generate scaffold User name:string email:string
rails db:migrate
までうまくいったのだが、続きがうまくいかなかった。
#URLに変なのがつく
2.2のUsersリソースで
rails server
してPreviewから遷移したページのURLを見たら
https://6b8aeab00f9f40d3b9dcc8bf7b7c212b.vfs.cloud9.us-east-2.amazonaws.com/?_c9_id=livepreview2&_c9_host=https://us-east-2.console.aws.amazon.com
と後ろに
?_c9_id=livepreview2&_c9_host=https://us-east-2.console.aws.amazon.com
がついてきた。
/users
をURLの最後に付け足しても何も遷移しない。こいつ何者。
同じ質問みっけた。
とりあえず、後ろのは消してもダイジョブみたい。
#Routing Error: No route matches [GET] "/users"
先ほどの後ろのを削除したURLに/users
を追加してみた。
User画面に行くはず。
エラー。なんで。
ググったり、Twitter検索したら、どうやら config/routes.rb に/usersを指定すれば良いみたい。
Rails.application.routes.draw do
resources :users #こいつを追加した
root 'application#hello'
end
この時点でチュートリアルの通りじゃなくて違和感。
#Routing Error uninitialized constant UsersController::RoutableActions
コントローラーがない!?
流石にチュートリアル的におかしいと勘付く。
app/controllers
を見ると、確かにUsersControllerは無かった。
本来であれば下の画像みたいになるはず。
#魔法不発
魔法の言葉 rails generate scaffold User name:string email:string
が怪しい。
ググると、こいつが config/routes.rb
に resources :users
を追加したりコントローラーを作ってくれるはずのようだ。
というわけでもう一回実行してみると
動いてませんでした。
scaffoldで生成された膨大なコードを今詳細に読む必要はありません。今の段階ではおそらく混乱するだけでしょう。
真に受けて全スルーしてた。
詳細には読まなくてもいいけど、同じかくらいは目を通しておきましょうね……。
#犯人は
scaffold 動かない でググると同じような人がいっぱいいるようで。
http://rails-learn.hatenadiary.jp/entry/2016/12/30/090531
どうやらspringというアプリケーションプリローダーが悪さをしている模様。
rails generate
がちゃんと動かなくなるらしい。
再起動。
ターミナルで
$ spring stop
$ bin/spring
で、もう一回魔法の言葉
$ rails generate scaffold User name:string email:string
ちゃんと動きました。
で、URLの後ろに/users
つけたらうまくいった。
疲れたが原因がちゃんとわかってよかった。一瞬飛ばそうかと思ったけど。