概要
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 |