概要
Railsの例題・掲示板の第1段階のためのコントローラーとビューを生成する。
コントローラー・ビューの生成
プロジェクトディレクトリー下で、2つのコントローラー、pages
とusers
を生成する。
pagesコントローラーとビュー
生成コマンド
pages
コントローラーには1つのアクションtop
を定義する。
rails generate controller pages top
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[vagrant@vagrant ex_bbs]$ rails generate controller pages top Running via Spring preloader in process 793 create app/controllers/pages_controller.rb route get 'pages/top' invoke erb create app/views/pages create app/views/pages/top.html.erb invoke test_unit create test/controllers/pages_controller_test.rb invoke helper create app/helpers/pages_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/pages.coffee invoke scss create app/assets/stylesheets/pages.scss |
コントローラー
上のコマンドによって、コントローラーファイルpages_controller.rb、ビューファイルtop.html.erbの2つのファイルが生成される。
app/controllers/pages_controller.rb
topアクションに対応する空のメソッドが定義されている。
1 2 3 4 |
class PagesController < ApplicationController def top end end |
ビュー
app/views/pages/top.html.erb
コントローラーと同名のディレクトリーがviewsディレクトリーに、アクションと同名のビューファイルがそのディレクトリーにつくられる。ビューファイルにはプレースホルダーの表示が書かれている。
1 2 |
<h1>Pages#top</h1> <p>Find me in app/views/pages/top.html.erb</p> |
usersコントローラーとビュー
生成コマンド
users
コントローラーには2つのアクションsign_up
、sign_in
を定義する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[vagrant@vagrant ex_bbs]$ rails generate controller users sign_up sign_in Running via Spring preloader in process 825 create app/controllers/users_controller.rb route get 'users/sign_in' route get 'users/sign_up' invoke erb create app/views/users create app/views/users/sign_up.html.erb create app/views/users/sign_in.html.erb invoke test_unit create test/controllers/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/users.coffee invoke scss create app/assets/stylesheets/users.scss |
コントローラー
上のコマンドの結果、1つのコントローラーファイルusers_controller.rbと2つのビューファイルsign_up.html.erb、sign_in.html.erbが生成される。
app/controllers/users_controller.rb
2つのアクションに対応する空のメソッドが定義されている。
1 2 3 4 5 6 7 |
class UsersController < ApplicationController def sign_up end def sign_in end end |
ビュー
コントローラーと同名(users)のディレクトリーがviewsディレクトリーの下につくられ、2つのビューファイルが生成される。
app/views/users/sign_up.html.erb
1 2 |
<h1>Users#sign_up</h1> <p>Find me in app/views/users/sign_up.html.erb</p> |
app/view/users/sign_in.html.erb
1 2 |
<h1>Users#sign_in</h1> <p>Find me in app/views/users/sign_in.html.erb</p> |
ルーティングの設定
基礎的なルーティングに従ってルーティングを設定していく。
デフォルトの設定
コントローラー・ビュー生成後のルーティングはconfig/routes.rbに書かれている。
1 2 3 4 5 6 7 8 9 |
Rails.application.routes.draw do get 'users/sign_in' get 'users/sign_up' get 'pages/top' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end |
初期状態では、GETメソッドで各ビューファイルがリクエストされたとき、ディレクトリー構成に従ってファイルを探すようルーティングされる。
たとえばブラウザーでhttp://localhost:3000/pages/topと入力するとpages
ディレクトリー下のtop.html.erb
が表示される。
ルーティングの設定変更
コントローラー生成時のルーティングを変更する。
- ビューファイルのディレクトリー構成によらず、URLで/top、/sign_up、/sign_inと指定してアクションが呼ばれるようにする
..._path
のリンク名を定義する
変更後のroutes.rbは以下のとおり。
1 2 3 4 5 6 7 |
Rails.application.routes.draw do get '/top', to: 'pages#top', as: :top get '/sign_up', to: 'users#sign_up', as: :sign_up get '/sign_in', to: 'users#sign_in', as: :sign_in end |