ProgateのRuby on Railsまとめ④(ⅣとⅤ)

【Ruby on Rails Ⅳ】

*投稿の編集
①データベースから編集したい投稿を取得
②値の上書き
③データベースに保存

📖編集ページの作成
→editアクションと、idを含めたルーティングを作成

🌟<textarea><%=@post.content%></textarea>
→textareaタグ内に初期値を設定

📖updateアクションで編集内容を保存
→ルーティングはpostにして、コントローラのアクション内では投稿一覧ページにリダイレクトさせる
📖フォームの送信先の指定
→updateアクションのURLへ
📖updateアクションの中身を作る
→find_byメソッドでURLからidの値を取り出す
🌟@post.content=params[:content]
→送信フォームのname属性を指定して、フォームの値を受け取って内容を更新して保存

*投稿の削除
①データベースから削除したい投稿を取得
②destroyメソッドで投稿を削除

📖ルーティングのget
→データベースを変更しないアクション
ルーティングのpost
→データベースを変更するアクション

📖destroyアクション
→通常のリンクは、getで書かれているルーティングを探してしまうので使えない
🌟
<%=link_to("削除","/posts/#{@post.id}/destroy",{method:"post"})%>
→postで書かれているルーティングを探してくれる


【Ruby on Rails Ⅴ】

📖バリデーション
→不正なデータが保存されないよう、データをチェックする仕組み。モデルで設定する。
🌟validates :検証するカラム名,{検証内容}
→presence:trueだと空の投稿を防ぐバリデーション
→length:{maximum:140}だと最大文字数140文字に設定
※検証内容はハッシュとなっているので、複数のバリデーション設定するときは、コンマで区切る

📖保存成功した時と失敗した時で、実行される内容と表示するページを分ける
→if @post.saveで条件分岐する

📖投稿失敗時にeditアクションに転送してるので、データベースから編集前のデータを取得している。なので、直前の投稿内容が消えてしまっている。
🌟render("フォルダ名/ファイル名")
→アクション経由せずに直接ビューファイルを表示させる。
→updateアクションの
@post.content=params[:content]
の直前の投稿内容を、編集のビューページに直接表示させる
↔️リダイレクトとの区別をする

🌟
<%=@post.errors.full_messages.each do
|message| %>
<%=message%>
<%end%>
→Railsで自動でエラーメッセージが入ってるので、メッセージを表示させたいところに書く

📖成功時にはフラッシュを利用
→ページに一度だけ表示されるメッセージ
🌟flash[:notice]="文字列"
→フラッシュメッセージを表示

📖ビューページで使いたい変数は@をつけてアクション内で設定するのを忘れない!


この記事が気に入ったらサポートをしてみませんか?