Railsの学習(3日目)
はいrails3日目〜。
SNSへの投稿内容を編集する
投稿を編集するには、①編集したい投稿を取得し、②その投稿のcontentの値を上書きした後に、③データベースに保存する。
図のようにpost.content = "新しい値"とすることで、投稿のcontentの値を上書きすることができる。
編集データを保存すると作成日は初投稿のままだが更新日は自動で更新される。
destroy 〜投稿内容を削除する〜
削除したい投稿内容に対して「destroy」メソッドを使うことでデータベースから削除することができる。
投稿編集ページを作成する。
どの投稿ページを編集するのか判別するために、投稿編集ページのURLにはidを使用することにする。これにより2番目の投稿を編集するときは/posts/2/editというページとなる。
また、postsコントローラ内にeditアクションを作成し、対応するビューとして、edit.html.erbも作成しましょう。
投稿詳細ページから投稿編集ページにアクセスできるように、以下のようなeditアクションのURLを指定して編集リンクを作成する。
投稿の編集をするためには編集フォームには投稿した内容を初期値として設定する必要がある。
editアクションで、URLのidと同じidの投稿データをデータベースから取得し、そのcontentの値(=投稿の内容)を初期値に設定する。
updateアクションはフォームの値を受け取るので、ルーティングを
getではなく、postにする必要がある。
また、特定のidの投稿を更新するので、URLにidを含むようにする(左の画像でposts/:id/updateとなっている)。
投稿を編集した後は投稿一覧ページにリダイレクトさせるので、ビューは
不要。
フォームで入力した内容をデータベースに保存するためには、フォームのデータをupdateアクションに送信する必要がある。
新規投稿ページを作ったときと同様に、form_tagメソッドを用いて、送信先を指定する。画像の送信先URLがそれである。
情報の更新
まずは更新する投稿データをデータベースから取り出す。
updateアクションのURLにはidが含まれているので、そのidを用ればデータベースから投稿データを取得できる。
次に、<textarea>タグにname属性を指定し、フォームの入力内容が変数paramsに代入されてupdateアクションに送信されるようにします。
updateアクションでは、フォームから送信された値をparams[:content]で
受け取り、@post.content = params[:content]で投稿データの内容を更新します。