Progate_Ruby on Rails5道場コース2
1・目標物の確認
2・バリデーション
・modelsの中にある「post.rb」にバリデーションを追加。
→validates :カラム名,{presence: true , length:{maximum: 文字数}}
3・新規投稿ページ
・posts/newページの作成
+ルーティングは「posts/:id」より上
+ビューファイル「new.html.erb」を作成し
指定されたコードを貼り付けてtextareaタグ追加
+postsコントローラにnewアクションを追加
+「application.html.erb」にlink_toメソッドを使って
「新規投稿」のリンク先作成
4・投稿の保存
・「create」アクションをpostsコントローラに追加
→@postに「Post.new(content: params[:内容])」
・ルーティング:posts/create(postで!)
・フォームタグを「new.html.erb」に追加。送信先を「/post/create」
<%=form_tag("フォーム送信先") do%>〜<%end%>
・redirect_to("URL")でリダイレクト
5・サクセス、エラーメッセージ
・newアクションに「@post=Post.new」
・保存成功なら(if @post.save〜else〜end)
+サクセスメッセージ(flash[:notice]=”成功メッセージ”)
+redirect_toで投稿一覧へ
・失敗ならrenderメソッドでそのページのまま
・new.html.erb
+@post.errors.full_messages.each do |message|〜endで表示をmessage
+textareaの中身を「@post.content」(=初期値)に。
・「application.html.erb」の<%=yield%>の上に
指定のコードを貼り付け、メッセージの表示
6・投稿編集ページの作成
・editアクション、ビューファイル「edit.html.erb」、ルーティング「posts/:id/edit」 追加
・editアクション:idを受け取る @post=Post.find_by(id: params[:id])
・「edit.html.erb」に指定のコードを貼り付け、textareaに初期値として@post.content
・「show.html.erb」に「編集」用のリンクを作成(投稿日時表示用コードのdiv閉じタグすぐ上)
7・編集機能の実装
・updateアクション、ルーティング(postで)「posts/:id/update」追加
・「edit.html.erb」
+フォームタグ作成(form_tag(”posts/#{@post.id}/update”))
+textareaにnameタグ「name="content"」
+指定のコードをtextareaタグの上に貼り付け、
5の「new.html.erb」と同様エラーメッセージが出るようにする
・updateアクション
+idの代入、「@post.content」に「params[:content]」を代入
+5と同様、「if @post.save "保存成功" else "保存失敗" end」
+renderメソッドで失敗したらそのページに。(render("posts/edit"))
8・削除機能
・destroyアクション、ルーティング(postで)「posts/:id/destroy」
・「show.html.erb」にlink_toメソッドで"削除"。
"/posts/#{@post.id}/destroy",{method:"post"}
・destroyアクション
+idの代入
+@post.destroyで削除、成功したら(if文)サクセスメッセージ・リダイレクト
総評
・一周目に比べればほとんど答えはわかったが
若干スライドを見ながら進めた箇所があったためまだ理解しているとは言えない。
弱い部分については改めて理解を深めようと思う。
・理解の甘い部分、忘れやすい部分
+newアクションに@post=Post.newを追加する
+リンクやリダイレクトのURLに「/」を忘れる
+postメソッドの時は「link_to」メソッドに{method:"post"}つける