BNBのプログラミング勉強記録

ガチのプログラミング初心者が駆け上がっていくブログ

メモ(Rails道場 II)

ミスったところ。

バリデーションの書き方

タイポ、カラムの指定忘れ、カンマ忘れ。まあ、書き方忘れてたら見ればいいんですがね。どのくらい身についてるのかなあと。

#ボツ
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