LoginSignup
0
0

More than 3 years have passed since last update.

(Ruby on Rails6) 投稿された内容を"消去" する

Posted at

まえがき

ここでは、RubyonRails6を使用して、投稿内容を 編集(内容の消去) を行う忘却録を記録します。
以前の投稿で 編集機能の実装 を行いました。編集機能の実装はそちらで記録しているので確認されたい方は、そちらでご確認ください。

投稿された内容を"消去" する

この投稿を実装するためには、アクションデータの消去(クリック)・投稿一覧への転送 を行います。

routes の設定

routes に deleteアクション を作成します。
form/:id/delete で、消去したいidのURLを特定させています。
また、データベースを変更する場合はroutes上で "get" ではなく "post" で設定します。

config/routes



post "form/:id/delete" => "form#delete"

View へのリンク設定

app/views/任意.html.erb
・
・
・
<%= link_to("削除", "/form/#{@post.id}/delete", {method: "post"}) %>

link_to を用いて、先ほど作成した deleteアクション へリンクしています。

注意: get と post の違い

{method: "post"}) をつけることで、routesのpostと紐づけることができます。
ややこしい!!

app/views/任意.html.erb
postでは↓エラー
<%= link_to("削除", "/form/#{@forms.id}/delete") %>

↓が正しい
<%= link_to("削除", "/form/#{@forms.id}/delete", {method: "post"}) %>

データを取り出して削除する

app/controllers/任意.rb
  def delete
    @forms = Form.find_by(id: params[:id])
    @forms.destroy

    redirect_to("/")
  end

↑の詳細

app/controllers/任意.rb
  def delete
    # find_byメソッドで、データを取得する
    @forms = Form.find_by(id: params[:id])
  end
app/controllers/任意.rb
  def delete
    # @テーブル名.destroy で削除する
    @forms.destroy
  end
app/controllers/任意.rb
  def delete
    # redirect_toメソッド でリダイレクトを設定する
    redirect_to("/")
  end

以上が、完了しエラーが怒らなければ、削除機能が出来上がっているはずです。
いかがでしたか?

あとがき

ここまで読んでいただき、ありがとうございました。
データベースの設定から表示・修正の機能を実装していて、投稿に削除機能をつけると本格的なサイトみたいですね。
でも、投稿機能が無事に削除された時は嬉しいけど切ない気持ちになります(Why?)

データーベースの作成・編集・デリート と基本機能を今までで実装しました。
セキュリティーや詳細機能を今後は学びたいと思います。

参考リンク

Ruby on Rails6 実践ガイド

Myリンク

また、Twitter・Portfolio のリンクがありますので、気になった方は
ぜひ繋がってください。プログラミング学習を共有できるフレンドが出来るととても嬉しいです。

Twitter
Portfolio
Github

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