LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】投稿機能

Posted at

【Rails】で投稿機能を作る

作り方流れ

  • 投稿フォームを作る
  • 投稿フォームにデータ入力し、データを送信
  • 送信内容をDBに保存
  • DBに保存した後、どこかの指定したviewページへ飛ばす(リダイレクト)

①投稿フォームを作る

このように作りたいと思います。

2023-03-11 (1).png

view/admin/items/new.html.erb
<%= form_with model: @items, url: admin_items_path do |f| %>
  <h4>タイトル</h4>
  <%= f.text_field :title %>
	
  <h4>本文</h4>
  <%= f.text_area :body %>
	
  <%= f.submit '投稿' %>
<% end %>

②ルーティング確認

newアクションcreateアクションの記述が必要です。
コントローラー作成の時にnewアクション付きで作成していれば、newはすでにあると思います。
しかし、データ保存を行うcreateアクションがない為、追加で書く必要があります。

config/routes.rb
Rails.application.routes.draw do
  get 'items/new'
  post 'items' => 'items#create'   #ここを追記します
  :
  :
end

resouresでまとめたら楽だと思います。(下記参照)

config/routes.rb
Rails.application.routes.draw do
resources :item, only: [:new, :index, :edit, :destroy, :show, :update, :create]
  
  :
  :
end 

③コントローラー

newとcreateの部分に書いていく必要があります。

class ItemsController < ApplicationController
  def new
    @item = Item.new  #投稿を新規作成するためのフォーム
  end
 
  def create
    @item = Item.new(item_params)  # データを受け取り新規登録するためのインスタンス作成
    @item.save  # データをデータベースに保存するためのsaveメソッド実行
    redirect_to admin_items_path  # itemのindexページ画面へリダイレクト
  end
  
private
  # ストロングパラメータ
  def item_params
    params.require(:items).permit(:title, :body)
  end
end

大まかにこんな感じかなぁ…:open_mouth:

0
0
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
0
0