0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rails 学習備忘録その2 ~道場レッスンIIまで~

Posted at

はじめに

マジでただのメモ 読んでもらうために書いてないので悪しからず...
第一回↓
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] みたいな感じで取り出せるようになる

  • postget は以下の使い分けらしい
    • get: データベースを変更しないアクション
    • post: データベースを変更するアクション
    • (GETとPOSTメソッドに対応している、って認識でいいのか...?)

削除

  • link_topostメソッドを使いたいときは、<%= 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 で編集すると良い
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?