LoginSignup
5
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-04-15

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

1. 前置き

1. 前提・事前作業

2. データを保存してみよう

  • POSTして projects#create というActionで登録する
  • /home/vagrant/taskApp/app/controllersprojects_controller.rb を弄る。
ruby(before)
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


end
ruby(after)
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)
    # データの保存
    @project.save
    # HOMEへ移動
    redirect_to projects_path
  end

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


end

無題.png

↓入力してボタンをポチる

無題.png

3. Validationを設定しよう

  • データの追加時にチェックを行う
  • Modelの中でバリデーションを行う
  • /home/vagrant/taskApp/app/Modelsproject.rb を弄る。
ruby(before)
class Project < ActiveRecord::Base
end
ruby(after)
class Project < ActiveRecord::Base
  # 必須制御
  # 「project」を未入力の状態では保存できなくなる
  validates :title, presence: true
end
  • 上記の場合、未入力の状態では保存はされないがエラーメッセージの表示が出来ないので、Controllerでエラー制御を追加する。
  • /home/vagrant/taskApp/app/controllersprojects_controller.rb を弄る。
  • ソースが長くなってきたのでbefore, afterでは書かない。
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

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

end

  • これで、下記の制御となる。
    • 保存成功 --> HOMEへ移動
    • 保存失敗 --> 入力フォームを再表示
5
5
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
5