3章 ほぼ静的なページの作成
git init する
Herokuにはまだ追加されていないので、Herokuへの登録もする
pushする
あとでRails5.2に上げる
StaticPages という名前のコントローラ作成
rails generate コントローラ名 action1 action2 action3 .... のルール
home help about のactionを作る
generate の結果は以下の通り
ルーティングとViewが作成されているのがわかります。
でも、modelは無し。(StaticなのでこれでOK)
code:bash
sample_app $ bundle exec rails generate controller StaticPages home help about
Running via Spring preloader in process 30521
create app/controllers/static_pages_controller.rb
route get 'static_pages/about'
route get 'static_pages/help'
route get 'static_pages/home'
invoke erb
create app/views/static_pages
create app/views/static_pages/home.html.erb
create app/views/static_pages/help.html.erb
create app/views/static_pages/about.html.erb
invoke test_unit
create test/controllers/static_pages_controller_test.rb
invoke helper
create app/helpers/static_pages_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/static_pages.coffee
invoke scss
create app/assets/stylesheets/static_pages.scss
Scaffoldでたくさんできちゃったファイルを消したい
rails generate に対して、rails destroy がある.....!
rails destroy controller コントローラ名 action名1 action名2...
rails destroy model モデル名 もある
db:migrate をやり直したい場合は db:rollback
code:bash
sample_app $ bundle exec rails destroy controller StaticPages home help about
Running via Spring preloader in process 20445
remove app/controllers/static_pages_controller.rb
route get 'static_pages/about'
route get 'static_pages/help'
route get 'static_pages/home'
invoke erb
remove app/views/static_pages
remove app/views/static_pages/home.html.erb
remove app/views/static_pages/help.html.erb
remove app/views/static_pages/about.html.erb
invoke test_unit
remove test/controllers/static_pages_controller_test.rb
invoke helper
remove app/helpers/static_pages_helper.rb
invoke test_unit
invoke assets
invoke coffee
remove app/assets/javascripts/static_pages.coffee
invoke scss
remove app/assets/stylesheets/static_pages.scss
sample_app $ cat config/routes.rb
Rails.application.routes.draw do
end
ルーティングも消えました!
ということで、再度作成しなおし。
code: bash
sample_app $ bundle exec rails generate controller StaticPages home help about
Running via Spring preloader in process 20465
create app/controllers/static_pages_controller.rb
route get 'static_pages/about'
route get 'static_pages/help'
route get 'static_pages/home'
invoke coffee
create app/assets/javascripts/static_pages.coffee
invoke scss
create app/assets/stylesheets/static_pages.scss
..... Snip ....
sample_app $ cat config/routes.rb
Rails.application.routes.draw do
get 'static_pages/home'
get 'static_pages/help'
get 'static_pages/about'
end
URLの確認
デフォルトだと、StaticPagesコントローラに対するアクションなので、このように。
3.2.1 の宿題
Fooコントローラの作成
bar baz アクションの作成
code:bash
sample_app $ bundle exec rails generate controller Foo bar baz
Running via Spring preloader in process 21429
create app/controllers/foo_controller.rb
route get 'foo/baz'
route get 'foo/bar'
invoke erb
create app/views/foo
create app/views/foo/bar.html.erb
create app/views/foo/baz.html.erb
invoke test_unit
create test/controllers/foo_controller_test.rb
invoke helper
create app/helpers/foo_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/foo.coffee
invoke scss
create app/assets/stylesheets/foo.scss
Fooコントローラーの削除
actionも指定しないと、routingが残ってしまうので注意
code:bash
# controllerだけだとroutingが消えない
sample_app $ rails destroy controller Foo
Running via Spring preloader in process 21457
remove app/controllers/foo_controller.rb
invoke erb
remove app/views/foo
invoke test_unit
remove test/controllers/foo_controller_test.rb
invoke helper
remove app/helpers/foo_helper.rb
invoke test_unit
invoke assets
invoke coffee
remove app/assets/javascripts/foo.coffee
invoke scss
remove app/assets/stylesheets/foo.scss
# actionまで指定する
sample_app $ rails destroy controller Foo bar baz
Running via Spring preloader in process 21520
remove app/controllers/foo_controller.rb
route get 'foo/baz'
route get 'foo/bar'
invoke erb
remove app/views/foo
remove app/views/foo/bar.html.erb
remove app/views/foo/baz.html.erb
invoke test_unit
remove test/controllers/foo_controller_test.rb
invoke helper
remove app/helpers/foo_helper.rb
invoke test_unit
invoke assets
invoke coffee
remove app/assets/javascripts/foo.coffee
invoke scss
remove app/assets/stylesheets/foo.scss