ミスったところ。
バリデーションの書き方
タイポ、カラムの指定忘れ、カンマ忘れ。まあ、書き方忘れてたら見ればいいんですがね。どのくらい身についてるのかなあと。
#ボツ class Post < ApplicationRecord valiates :{ presence:true, length:{maximum:140} } end
#正解 class Post < ApplicationRecord validates :content,{ presence:true, length:{maximum:140} } end
ルーターのpostの書き方
ボツ、というかどう書けばいいか忘れてた。要は、ルーターはあくまで「何コントローラ」の「何アクションをするか」を設定する物なので、ここで設定したアクションをコントローラで淡々と設定するのみ。なんというか、htmlファイルがないので変な感覚になるんだろうな。
#ボツ post "posts/create" =>
#正解 post "posts/create" => "posts#create"
flash
frashというタイポはやばい。あと、条件式で書かないとfalse時にfalseって出るんだろうかな。と思って試したけど出ないな。まあ、基本はこうやって(条件式で、〇〇がトゥルーで表示)書くんだろうな。フーン感半端ねえ
#ボツ <%= frash[:notice] %>
#正解 <% if flash[:notice] %> <%= flash[:notice] %> <% end %>
form_tagの指定
あ〜 って感じ。
#ボツ <%= form_tag("/posts/update") do %>
#正解 <%= form_tag("/posts/#{@post.id}/update") do %>
renderの書き方
- ここが一番引っかかった。なんでや?なんでこう書くのよ
- 復習してて気づいた。これか→「render("フォルダ名/ファイル名")のように表示したいビューを指定」
- 今回の場合「posts/hoge/edit」にrenderするので、淡々とeditビューを表示させるためにrender("posts/edit")って書くんか。
- ボツ例の書き方だと、renderにならんのだろうな。
- フーン感半端ねえ
- いや、そんな事ねえ
#ボツ def update @post = Post.find_by(id: params[:id]) @post.content=params[:content] if @post.save flash[:notice]="編集に成功" redirect_to("/posts/index") else render("posts/#{params[:id]}/edit") end end
#正解 def update @post = Post.find_by(id: params[:id]) @post.content=params[:content] if @post.save flash[:notice]="編集に成功" redirect_to("/posts/index") else render("posts/edit") end end