ギークなエンジニアを目指す男

基幹系SIerがWeb系とかネイティブ系の知識を蓄えようとするブログ

Ruby on railsでタスクアプリを作成してみる~showアクション~

f:id:taxa_program:20170724224720p:plain

今日もタスクアプリを作成していきます。 p1, p2 の処理を追加していきます。

パスの設定

下記ファイルを編集します。
taskapp/app/views/projects/index.html.erb

<h1>Projects</h1>

<ul>
  <% @projects.each do |project| %>
  <li><%= link_to project.title, project_path(project.id) %></li>
  <% end %>
</ul>

project.titleにパスを設定しているのですが、ここで設定している
project_path(project.id)の部分はどこに定義されているかというと、
下記コマンドを実行すれば分かります。

$ rake routes

>      Prefix Verb   URI Pattern                  Controller#Action
>    projects GET    /projects(.:format)          projects#index
>             POST   /projects(.:format)          projects#create
> new_project GET    /projects/new(.:format)      projects#new
>edit_project GET    /projects/:id/edit(.:format) projects#edit
>     project GET    /projects/:id(.:format)      projects#show
>             PATCH  /projects/:id(.:format)      projects#update
>
>             PUT    /projects/:id(.:format)      projects#update
>             DELETE /projects/:id(.:format)      projects#destroy
>        root GET    /                            projects#index

上記のproject GET /projects/:id(.:format) projects#show
の部分が設定されていることになります。

showアクションの追加

projects#showとあるので、controllerにshowメソッドを追加する必要があります。

taskapp/app/controllers/projects_controller.rb

class ProjectsController < ApplicationController
  def index
    @projects = Project.all
  end
  # --追加
  def show
    @project = Project.find(params[:id])
  end
  # --追加
end

また、同様にビューの作成も必要となります。
ここではtitleの表示のみを行ってみます。

taskapp/app/views/projects/show.html.erb

<h1><%= @project.title %></h1>

f:id:taxa_program:20170729155222p:plain

うまく表示されました。