今日は新規プロジェクトの追加処理を実装します。
プロジェクト追加ボタンの実装
まずはメインビューにプロジェクトを追加するためのボタンを追加します。
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 %>
無事にできました。
追加処理の実装(データの保存)
次に、このデータを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
こんな感じで追加するとプロジェクトが追加できます。
なぜcreateメソッドなのか、projects_pathってなんだよ
って思う方は、下記記事を参考にしてみてください。