Rails アクションから別テンプレートを表示させる
RailsでControllerを作成してアクションからrenderメソッドを利用して、別のテンプレートを表示させる手順を記述してます。
環境
- OS windows10 pro 64bit
- ruby 2.7.1
- rails 6.0.3.2
※windows10にrubyをインストールして実行する手順はこちら
※windows10にRuby on Railsをインストールして利用する手順はこちら
Controller作成
まずは、下記のコマンドでcontroller「test」を作成します。
rails generate controller tasks index
「app\controller」に「tasks_controller.rb」が生成されます。
class TasksController < ApplicationController
def index
end
end
ブラウザから http://プライベートIP or サーバーアドレス:3000/tasks/index にアクセスすると「app\views\tasks」にあるテンプレート「index.html.erb」が表示されます。
renderメソッド利用
「app\controller」にある「tasks_controller.rb」を下記のように編集します。
class TasksController < ApplicationController
def index
render :show
end
end
「app\views\tasks」フォルダ配下にある「show.html.erb」を下記の内容で作成します。
<h1>Tasks#show</h1>
<p>Find me in app/views/tasks/show.html.erb</p>
ブラウザから http://プライベートIP or サーバーアドレス:3000/tasks/index にアクセスすると
作成した「app\views\tasks」にあるテンプレート「 show .html.erb」が表示されることが確認できます。
次にrenderを利用して、ヘッダーとフッターを作成してみます。
「app\views\tasks」フォルダ配下に 「_headder.html.erb」と「_footer.html.erb」をそれぞれ下記の内容で作成します。
_headder.html.erb
<h1>ヘッダー</h1>
_footer.html.erb
<h1>フッター</h1>
「app\views\tasks」にあるテンプレート「 show .html.erb」を下記の内容で編集します。
<%= render 'headder'%>
<h1>Tasks#show</h1>
<p>Find me in app/views/tasks/show.html.erb</p>
<%= render 'footer'%>
ブラウザから http://プライベートIP or サーバーアドレス:3000/tasks/index にアクセスすると、
テンプレートを利用したヘッダーとフッターが表示されていることが確認できます。
-
前の記事
javascript axiosを使ってjsonデータを取得する 2020.10.15
-
次の記事
docker composeを使ってDolibarrを構築するまでの手順 2020.10.15
コメントを書く