Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

Rails 日記アプリの制作 ~投稿form~

Rails日記App、scaffoldを中間ゴールにして作成していた。
が、こちらの方が出来上がった後がワクワクする!綺麗!

qiita.com

日記Appだと「投稿form」を作成するときに

  • タイトル
  • 本文

など複数のオブジェクトを入力しないといけない。
controllerで変数書くとき、「これでええんかな?」ってなってた。

qiita.com

  • new.html.erb で 【form_forメソッド】を使えばいいのな!!

これめっちゃ便利

  • form_for, url: pathを明示。エラー出たので。

qiita.com
qiita.com





Gitのブランチ機能の仕様の流れ

kusu.hateblo.jp

ストロングパラメータを受け取って、投稿データを保存する

class PostsController < ApplicationController
    def index
    end

    def new
        # Postモデルのオブジェクトを作成
        # @postはインスタンス変数で、Viewで参照可能
        @post = Post.new
    end

    def create
        # データはparamsという変数に渡されてくる
        # create は、Postモデルのクラスメソッド
        Post.create(post_params)
    end

    private

    # paramsから欲しいデータのみ抽出
    def post_params
        params.require(:post).permit(:name, :title, :content)
    end
end

controller内でストロングパラメータを受け取って、インスタンス変数に格納していた。

www.transnet.ne.jp

railsguides.jp

エラー出たとこ

  • form送信できない:create アクションにエラー

No matching routs [POST] '/posts/create'
- ルーティング => 合っている
- ビュー: form_forとかが怪しそう。
解決
- form_for @post url: path do |f| => form_for @post do |f|
普通にただインスタンス変数を指定するだけで良かったみたい。ルーティング通って表示された。