投稿機能(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を使用した投稿フォールの作成方法とは別に、ヘルパーメソッドという便利なメソッドが存在します。
ヘルパーメソッドを使用した投稿フォームの記載
<%=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の値を保存する記載