はじめに
マジでただのメモ 読んでもらうために書いてないので悪しからず...
第一回↓
https://qiita.com/menma_at_here/items/fe207f4a4241c11d504e
内容
progate の rails入門を進めていく
4章~5章まで
rails IV
編集
- updateとかcreateするときは、ルーティングを
get
ではなくpost
にする必要がある-
post "posts/:id/update" => "@posts#update"
みたいな感じでupdateアクションに飛ばして、その中でredirect_to("~~")
をする、みたいな流れ
-
- form を使うときは、以下みたいな感じで
form_tag
を使う
<%= form_tag("/posts/#{@post.id}/update") do %>
<div class="form">
<div class="form-body">
<!-- <textarea>タグのname属性をcontentに指定してください -->
<textarea name="content"><%= @post.content %></textarea>
<input type="submit" value="保存">
</div>
</div>
<% end %>
このとき、div に指定した属性 (上のコードであれば name
) に入っている値がハッシュ値として格納され、controller の中で params[:content]
みたいな感じで取り出せるようになる
-
post
とget
は以下の使い分けらしい-
get
: データベースを変更しないアクション -
post
: データベースを変更するアクション - (GETとPOSTメソッドに対応している、って認識でいいのか...?)
-
削除
-
link_to
でpost
メソッドを使いたいときは、<%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %>
とする
rails V
バリデーション
- バリデーションは models/~~.rb に付け加える
validates :content, {presence: true, length:{maximum: true}}
#validates 検証するカラム名, {validationの内容}
- saveメソッドは
- バリデーションに成功 → true を返す
- バリデーションに失敗 → false を返す (ロールバックが起きる)
-
render("posts/edit")
でposts/edit.html.erb に直接飛ばせる- この
posts/edit
はviewファイル
- この
- バリデーションに失敗すると、
@post.errors.full_messages
の中にエラー内容が自動的に入る (なんだこの微妙に便利な機能...)
flash
-
flash[:notice]
に文字列を代入すると、「成功しました」みたいなメッセージを一時的に出す「フラッシュ」を出すことが出来る - 共通で使うので、
application.html.erb
で編集すると良い