Ruby on Rails5 学習メモ #02
仕事でエンジニアの方々が使っている言語がRailsなのでなんとなくでも理解をできたらと思い、休みの日に少しずつProgateで学んだことのメモしていく。vol.2.
データベースからレコードを取得してカラムの値を変更する
変数 = モデル名.find_by(id:値)
変数.カラム名 = "値"
変数.save
データベースからレコードを削除する
変数 = モデル名.find_by(id:値)
変数.destroy
リダイレクトする
redirect_to("URL")
フォームのデータをアクションに送信する
送信先form_tagメソッドを使う
<%= form_tag("送信先URL") do %>
<textarea><%= @モデル名.カラム名 %></textarea>
<input type="submit" value="保存" />
<% end %>
getとpostの使い分け
データベースを変更しない場合はget。データベースを変更する場合はpostを使う。
post用のリンク生成
link_toの第三引数に{method: "post"}を追加すれば、postとしてルーティングしてくれる。例として削除リンクを作る場合は以下。指定しないとget扱いになってしまう。
<%= link_to_("削除","/モデル/#{@モデル名.id}/destroy",{method: "post"}) %>
バリデーションの仕方
モデルでvalidatesを使う。
validates :検証するカラム名, {検証する内容}
空文字を防ぐバリデーション
空文字を防ぐのは{presence: true}を使う。
validates :検証するカラム名, {presence: true}
最大文字数制限のバリデーション
最大文字数制限は{length, {maximum: 文字数}}を使う
validates :検証するカラム名, {length, {maximum: 140}}
バリデーションを複数設置
カンマで区切る
validates :検証するカラム名, {presence: true, length, {maximum: 140}}
別のアクションを経由せずに、直接ビューを表示
renderメソッドを用いることで、別のアクションを経由せずに、直接ビューを表示することができる
render("フォルダ名/ファイル名")
エラーメッセージの取得と表示
Railsはエラーメッセージは自動生成されて@モデル名.errors.full_messagesの配列に入っている。
<% @モデル名.errors.full_messages.each do |message| %>
<%= message %>
<% end %>
メッセージをフラッシュで表示
ページ上に1度だけ表示されるメッセージをフラッシュといいます。アクションで変数flash[:notice]に文字列を代入すると、flash[:notice]をビューで使うことができます。
# コントローラー
flash[:notice] = "表示したい文字列"
# ビュー
<% if flash[:notice] %>
<%= flash[:notice] %>
<% end %>
---
うーん。Rubyで使われる英語ってSQLとかと違う英語を関数にするから混乱するなぁ。deleteじゃなくdestroyだったりとか。慣れなのか、オレの英語力が低いのか。…後者な気がするが(汗)
まだまだ続く。