学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails

Ruby on Rails 6.0によるWebアプリケーション開発09 コントローラとビュー

<<前  [TOP]  次>>


「sample」アプリケーションにコントローラを追加して動作を見てみます。
コマンドプロンプトで「sample」フォルダの「bin」フォルダに移動し、「rails generate controller Say hello goodby」と入力します。
「rails generate」コマンドで「Sayコントローラ」を作成しています。

「rails generate」コマンド
「rails generate」コマンド


まずはコントローラのソースファイルを見てみます。
ファイルは「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」にアクセスして確認してみます。

「goodby」ビューへのリンク
「goodby」ビューへのリンク


カレントディレクトリに存在するファイルリストを返すメソッド「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」にアクセスして確認します。

ブラウザの表示
ブラウザの表示


<<前  [TOP]  次>>