Rails 日記アプリの制作 ~投稿form~
Rails日記App、scaffoldを中間ゴールにして作成していた。
が、こちらの方が出来上がった後がワクワクする!綺麗!
日記Appだと「投稿form」を作成するときに
- タイトル
- 本文
など複数のオブジェクトを入力しないといけない。
controllerで変数書くとき、「これでええんかな?」ってなってた。
- new.html.erb で 【form_forメソッド】を使えばいいのな!!
これめっちゃ便利
- form_for, url: pathを明示。エラー出たので。
Gitのブランチ機能の仕様の流れ
ストロングパラメータを受け取って、投稿データを保存する
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内でストロングパラメータを受け取って、インスタンス変数に格納していた。
エラー出たとこ
- form送信できない:create アクションにエラー
No matching routs [POST] '/posts/create'
- ルーティング => 合っている
- ビュー: form_forとかが怪しそう。
解決
- form_for @post url: path do |f| => form_for @post do |f|
普通にただインスタンス変数を指定するだけで良かったみたい。ルーティング通って表示された。