1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails 投稿機能

Last updated at Posted at 2021-07-20

投稿機能(newアクション)

railsを利用した基本的な投稿機能について、学習内容をメモ的に記載しています。

ルーティング

Rails.application.routes.draw do
  get "posts/new", to: "posts#new" 
end

まずは、newアクションに対応するルーティングを記載し、新規投稿画面に遷移させます。
HTTPメソッドは、新規投稿画面を表示させたいので、サーバに対して「新規投稿画面を下さいよ」という意味でgetを使用します。

投稿フォームの作り方
<form action="/posts" method="post">
  <type="text" name="content">
  <type="submit" value="投稿する">
</form>

ヘルパーメソッド(form_with)

前述のhtmlを使用した投稿フォールの作成方法とは別に、ヘルパーメソッドという便利なメソッドが存在します。
ヘルパーメソッドを使用した投稿フォームの記載

html.erb
<%=form_with url: "/posts", method: :post local: true do |form|%>
  <%=form.text_field :content%>
  <%=form.submit "投稿する"%>
<%end%>
ヘルパーメソッドを使用するメリット
  • コードの記述を簡略的・分かりやすく記述できる
  • セキュリティ面が向上する
パラメーター

formからリクエストでサーバに対して値を送る時に外部から渡されるデータのこと。
railsのコントローラーに渡されるパラメーターはparamsというはハッシュ形式に格納されています。

<%=form.text_field :content%>

:の後に記載したキー名で、値を送信することで、リクエストのparams内に{"キー名"=>"投稿内容"}と言った形式で値をコントローラーに渡すことができます。
コントローラーにおいて、params[:キー名]で値を取得することができます。

投稿機能(createアクション)

ルーティング

Rails.application.routes.draw do
  get "posts/new", to: "posts#new"
  post "posts", to: "posts#create"  
end

createアクションの場合は、URIパターンは、postsのみの記載、HTTPメソッドがpostになっている点に注意が必要です。
サーバに対して、何か値を送信するので、postメソッドが必要になります。
投稿完了とともに、投稿完了画面を返してやると、わかりやすいです。

createメソッド

ActiveRecordメソッドの一つで、値をテーブルに保存するには、new→情報入力→saveの流れが必要でしたが、このメソッドを使えば一発でテーブルに保存することができます。

def create
  Post.create(params[:content])
end
# Postテーブルにformから送られてきたキー名contentの値を保存する記載
1
0
1

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?