LoginSignup
5
6

More than 5 years have passed since last update.

Railsでタスク管理アプリを作成_6

Posted at

タスク管理アプリを作ってみよう(続き)

1. 前置き

1. 前提・事前作業

2. データを削除しよう

  • 削除機能を追加
  • Homeに削除リンクを追加する
  • rake routes の内容に従い定義する(destroy Actionを作成する)
$ 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
  • /home/vagrant/taskApp/app/Views/projectsindex.html.erb を弄る。
ERB
<h1>Projects</h1>

<ul>
  <% @projects.each do |project| %>
  <li> 
    <!-- 登録情報参照ページへのリンク -->
    <%= link_to project.title, project_path(project.id) %> 
    <!-- 編集ページへのリンク -->
    <%= link_to "[Edit]", edit_project_path(project.id) %> 
    <!-- 削除リンク -->
    <!-- methodにdeleteを指定することで、Destroyアクションと紐づけられる -->
    <!-- dataで確認メッセージを指定 -->
    <%= link_to "[Delete]", project_path(project.id), method: :delete, data: {confirm: "are you sure?"} %> 
  </li>
  <% end %>
</ul>

<p><%= link_to "Add New", new_project_path %></p>


  • Deleteリンクが追加された。リンクを押下してみると確認メッセージが表示される。

無題.png

無題.png

  • Destroy Actionを作成する。
  • /home/vagrant/taskApp/app/Constollersprojects_constroller.rb を弄る。
ruby
class ProjectsController < ApplicationController


  # indexアクションを追加
  def index
    # @をつけた変数はviewでそのまま使用可能
    # Projectの全データを引っ張ってくる
    @projects = Project.all
  end

  # showアクションを追加
  def show
    @project = Project.find(params[:id])
  end

  # newアクションを追加
  def new
    @project = Project.new
  end

  # createアクションを追加
  def create
    # Formからの入力値を受け取る
    @project = Project.new(project_params)
    # データの保存
    if @project.save
      # saveがtrueだったらHOMEへ移動
      redirect_to projects_path
    else
      # saveがfalseだったら入力フォームに戻る
      render 'new'
    end
  end

  # editアクションを追加
  def edit
    @project = Project.find(params[:id])
  end

  # updateアクションを追加
  def update
    @project = Project.find(params[:id])
    if @project.update(project_params)
      redirect_to projects_path
    else
      render 'edit'
    end
  end

  # Destroyアクションを追加
  def destroy
    @project = Project.find(params[:id])
    # 削除
    @project.destroy
    # Homeへリダイレクト
    redirect_to projects_path
  end



  # project_params を定義
  private
    def project_params
      # projectでわたってきたもののうち、titleだけ使用
      params[:project].permit(:title)
  end


end
  • 削除できるようになった(↓削除結果)

無題.png

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6