<<前 [TOP] 次>>
「sample」アプリケーションにコントローラを追加して動作を見てみます。
コマンドプロンプトで「sample」フォルダの「bin」フォルダに移動し、「rails generate controller Say hello goodby
」と入力します。
「rails generate」コマンドで「Sayコントローラ」を作成しています。
まずはコントローラのソースファイルを見てみます。
ファイルは「C:\Rails6\work\sample\app\controllers」フォルダにある「say_controller.rb」ファイルです。
【C:\Rails6\work\sample\app\controllers\say_controller.rb】
class SayController < ApplicationController def hello end def goodby end end
Pumaを起動してブラウザのURLに「http://localhost:3000/say/hello」と入力してみます。
ブラウザには以下のように表示されます。
次はビューの書き換えを行います。
「C:\Rails6\work\sample\app\views\say」フォルダにある「hello.html.erb」ファイルは以下のようになっています。
【C:\Rails6\work\sample\app\views\say\hello.html.erb】
<h1>Say#hello</h1> <p>Find me in app/views/say/hello.html.erb</p>
これを以下のように書き換えます。
文字コードを「UTF-8」で保存し直さないと文字化けします。
<h1>こんにちは!</h1> <p>Find me in app/views/say/hello.html.erb</p>
ブラウザのURL「http://localhost:3000/say/hello」を更新すると書き換えが反映しているのがわかります。
このように「.html.erb」ファイルにはHTMLの記述ができますが、「<%=」と「%>」の間に記述されたコードはRubyのコードと解釈されて実行されます。
「hello.html.erb」ファイルを以下のように書き換えます。
<h1>こんにちは!</h1> <p>現在の時刻は<%= Time.now %>です。</p> <p>Find me in app/views/say/hello.html.erb</p>
ブラウザのURL「http://localhost:3000/say/hello」を更新します。
実際には「.html.erb」ファイルに直接Rubyコードを埋め込むより、コントローラにインスタンス変数を記述してそれを呼び出します。
インスタンス変数は変数名の頭に「@」をつけます。
「Say」コントローラの「hello」メソッド部分にインスタンス変数「@time」の記述を追加します。
【C:\Rails6\work\sample\app\controllers\say_controller.rb】
class SayController < ApplicationController def hello @time = Time.now end def goodby end end
「hello.html.erb」ファイルでインスタンス変数「@time」を呼び出します。
【C:\Rails6\work\sample\app\views\say\hello.html.erb】
<h1>こんにちは!</h1> <p>現在の時刻は<%= @time %>です。</p> <p>Find me in app/views/say/hello.html.erb</p>
ブラウザのURL「http://localhost:3000/say/hello」を更新して確認します。
この「Say」コントローラにはすでに「goodby」というアクションを定義済みなので、「C:\Rails6\work\sample\app\views\say」フォルダにある「goodby.html.erb」ファイルを以下のように書き換えます。
文字コードを「UTF-8」に変更するのを忘れないようにしてください。
【C:\Rails6\work\sample\app\views\say\goodby.html.erb】
<h1>さようなら!</h1> <p>ご訪問ありがとうございました。</p> <p>Find me in app/views/say/goodby.html.erb</p>
ブラウザのURL「http://localhost:3000/say/goodby」にアクセスして確認します。
続いてこの「hello」と「goodby」の2つ画面を繋ぐリンクを作成します。
Railsにはビューテンプレート内で使用可能なヘルパーメソッドが用意されています。
ここでは「link_to()」メソッドを利用します。
【C:\Rails6\work\sample\app\views\say\hello.html.erb】
<h1>こんにちは!</h1> <p>現在の時刻は<%= @time %>です。</p> <br> <p> 「<%= link_to "さようなら", say_goodby_path %>と表示する」 </p> <p>Find me in app/views/say/hello.html.erb</p>
これで「goodby」ビューへのリンクができます。
「http://localhost:3000/say/hello」にアクセスして確認してみます。
カレントディレクトリに存在するファイルリストを返すメソッド「Dir.glob()」を利用する例を示します。
【C:\Rails6\work\sample\app\controllers\say_controller.rb】
class SayController < ApplicationController def hello @time = Time.now end def goodby @files = Dir.glob('*') end end
【C:\Rails6\work\sample\app\views\say\goodby.html.erb】
<h1>さようなら!</h1> <p>ご訪問ありがとうございました。</p> <br> <p>カレントディレクトリのファイル名:</p> <ol> <% for file in @files %> <li> <%= file %> </li> <% end %> </ol> <br> <p>Find me in app/views/say/goodby.html.erb</p>
「http://localhost:3000/say/goodby」にアクセスして確認します。
↓↓クリックして頂けると励みになります。