Ruby on Railsでアプリを作ってみよう⑧


データを作って保存する処理を行っていきます。
テーブルにデータを保存するため、createアクションを使用します。

まずはルーティングを設定していきましょう

config/routes.rb
Rails.application.routes.draw do
  get 'posts', to: 'posts#index'
  get 'posts/new', to: 'posts#new'
  post 'posts', to: 'posts#create' #クリエイトアクションへのルーティング設定
end

rails routes コマンドでルーティング確認


ルーティングが設定されました。

コントローラーにアクションを設定しよう

app/controllers/posts_controller.rb
class PostsController < ApplicationController
  def index
    @posts = Post.all
  end

  def new
  end

  def create
  end
end

ビューファイルを作りましょう

app/views/postsディレクトリに、create.html.erbを作り
トップページに戻るリンクを記述しましょう。

<h1>投稿完了</h1>
<%= link_to 'トップページに戻る', '/posts' %>

ブラウザからフォームを送信した時の流れを見てみましょう。
サーバーに情報を渡すためにフォームにパラメーターというものを含ませることができます。

params

送られてきた情報をハッシュのような形で格納したものです。
今回はtext_fieldの後に記載されたキーでparamsに格納されています
フォームで入力された情報の値は、params[:キー名]として取り出すことができます。

『comment』というキーで『ありがとう』というデータを送信すると
paramsに{comment: ありがとう}といったハッシュ構造で格納されます。
コントローラーでparams[:comment]とすると『ありがとう』というデータが取れます。

createメソッドを使ってアクションに保存の処理を書く

createメソッドはActiveRecordメソッドのひとつでデータを作って保存できます。

モデル.create(カラム名: )

今回はpostsテーブルのcommentというカラム名に、params[:content]の情報を保存します

Post.create(content: params[:content])

postsコントローラーに追記しましょう。

class PostsController < ApplicationController
  def index
    @posts = Post.all
  end

  def new
  end

  def create
    Post.create(comment: params[:comment])
  end
end

これで終了です。
最後に動作確認をしましょう。

以上です。