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

機械学習系の知識を蓄えようとするブログ

Ruby on railsでタスクアプリを作成してみる~新規プロジェクトを追加~

f:id:taxa_program:20170724224720p:plain

今日は新規プロジェクトの追加処理を実装します。

プロジェクト追加ボタンの実装

まずはメインビューにプロジェクトを追加するためのボタンを追加します。

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>

<p><%= link_to "Add_New", new_project_path %></p>

これでAdd_Newボタンが追加されました。

追加処理の実装(コントローラ)

コントローラにnewメソッドを追加します。

taskapp/app/controllers/projects_controller.rb

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

追加処理の実装(ビュー)

コントローラに追加したnewメソッドのビューを作成します。

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

<h1>Add New</h1>

<%= form_for @project do |f| %>

  <p>
    <!-- タイトルを入力するためのフィールド -->
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <!-- 確定ボタン -->
    <%= f.submit %>
  </p>

<% end %>

f:id:taxa_program:20170730124824p:plain

無事にできました。

追加処理の実装(データの保存)

次に、このデータをPOSTしてデータの保存を行います。

taskapp/app/controllers/projects_controller.rb

class ProjectsController < ApplicationController
  def index
    @projects = Project.all
  end
  def show
    @project = Project.find(params[:id])
  end
  def new
    @project = Project.new
  end
  #==追加
  def create
    @project = Project.new(project_params)
    # プロジェクトの保存
    @project.save
    # 保存後にprojects_pathに移動する
    redirect_to projects_path
  end

  private
    def project_params
      # paramsの中のprojectで渡って来た中のもののうち、titleのみを取得する
      params[:project].permit(:title)
    end
  #==追加
end

こんな感じで追加するとプロジェクトが追加できます。
f:id:taxa_program:20170730130407p:plain

f:id:taxa_program:20170730130435p:plain

なぜcreateメソッドなのか、projects_pathってなんだよ
って思う方は、下記記事を参考にしてみてください。

taxa-program.hatenablog.com