見出し画像

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だったりとか。慣れなのか、オレの英語力が低いのか。…後者な気がするが(汗)

まだまだ続く。