🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1716閲覧

railsでdestroyメソッドが反映されない件について

dokodoko

総合スコア20

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/12/22 08:49

編集2019/12/22 09:44

destroyメソッドが反映されなくて困っています。

postcontroller

1class PostsController < ApplicationController 2 def index 3 4 @posts = Post.all 5 end 6 7 def new 8 @post = Post.new 9 end 10 11 def create 12 Post.create(post_params) 13 end 14 15 private 16 def post_params 17 params.require(:post).permit(:text).merge(user_id: current_user.id) 18 end 19 20 def edit 21 end 22 23 def show 24 end 25 26 def update 27 end 28 29 def destroy 30 post = Postt.find(params[:id]) 31 if post.user_id == current_user.id 32 post.destroy 33 end 34 end 35end

routes

1Rails.application.routes.draw do 2 devise_for :users 3 4 root to: 'posts#index' 5 resources :posts 6 resources :users 7 end

index

1<div class="posts"> 2 <% @posts.each do |post| %> 3 <li> 4 <%= link_to '削除', "/posts/#{post.id}", method: :delete %> 5 </li> 6 <%= simple_format(post.text) %> 7 <% end %> 8</div> 9

new

1<div class = "posts"> 2 <%= form_for(@post) do |f| %> 3 <%= f.text_field :text %> 4 <%= f.submit '投稿' %> 5 <% end %> 6</div> 7

rails sした際に

ログインアプリ
ログアウト
マイページ
投稿する

削除
vvvvvvvvv

この用に表示されます

vvvvvvvvvはコメントとして送信して表示された結果です。
この際に消去を押すと下の用になりback to indexを押してメイン画面に戻っても

ログインアプリ
ログアウト
マイページ
投稿する
dddd
back to index

ログインアプリ
ログアウト
マイページ
投稿する

削除
vvvvvvvvv

コメントのvvvvvvvvvが消えません。

destroyメソッドを反映させコメントを消すにはどうしたらいいでしょうか?
お力を貸していただけると助かります。
またこちらの質問の仕方が分かりにくかったりしたら補足させていただきますのでよろしくお願いします。

def destroy
post = Postt.find(params[:id])
if post.user_id == current_user.id
post.destroy
end
end

def destroy
post = Post.find(params[:id])
if post.user_id == current_user.id
post.destroy
end
end

に改善させていただきました。がやはりまだ消去ボタンがつかえません。
お力を貸していただけると助かります。 よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

def destroy post = Postt.find(params[:id]) if post.user_id == current_user.id post.destroy end end

の中にタイポがあります。

post = Postt.find(params[:id])

post = Post.find(params[:id])

にしたら解決するのでは…?

投稿2019/12/22 09:25

k-810

総合スコア192

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dokodoko

2019/12/22 09:46 編集

回答ありがとうございます。協力してくださり本当にありがたいです。 指摘して頂いた点を改善させていただきましたがやはり消去ボタンが反映されませんでした。 せっかく回答して頂いたのに活かせずに申し訳ありません 他に何か原因があればご指摘頂けると助かります。 お手数ですがよろしくお願いします。
k-810

2019/12/22 10:22

def destroy post = Postt.find(params[:id]) if post.user_id == current_user.id post.destroy end end のところが def destroy ではなくて def delete ではないでしょうか?
k-810

2019/12/22 10:23

あ,すみません,やっぱりdestroyで合ってます????
k-810

2019/12/22 10:27

def destroy post = Postt.find(params[:id]) if post.user_id == current_user.id post.destroy end end がprivateより下にあるのが原因だと思います
dokodoko

2019/12/22 10:44

解決しました‼️ ありがとうございます。 未熟な私に最後まで付き合ってくださりありがとうございました。( ; ; ) 本当にありがとうございました。
k-810

2019/12/22 10:52

解決してよかったです!!
dokodoko

2019/12/22 10:54

privateの位置なんて全く原因の可能性に考えてなかったので質問してなかったら私では解決出来なかったと思います。 ありがとうございました。
guest

0

def destroy post = Postt.find(params[:id]) if post.user_id == current_user.id post.destroy end end

のメソッドのところで redirect_toを入れてないからなのかなあ
省略もできたような気もするけど、一度入れて試してみてはいかがでしょう

投稿2019/12/22 09:48

story_aniki

総合スコア197

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dokodoko

2019/12/22 09:58

回答ありがとうございます。協力してくださり本当にありがたいです。 def destroy post = Post.find(params[:id]) if post.user_id == current_user.id post.destroy end redirect_to posts_path end このような記述で当っているでしょうか? 試したところやはり反映されませんでした。 質問に質問で返してしまいすいません。
story_aniki

2019/12/22 10:07

その書き方で問題ありませんね そうでしたか、無理でしたか、もう一つ考えられるとすれば、k-810さんの指摘したタイプミスは間違いなくバグでしたから、それを修正しても症状が変わらないという点に着目して、修正が反映されてない可能性はないですか?
dokodoko

2019/12/22 10:41

返信ありがとうございます。 すいません。私が未熟なためにちゃんとstory_anikiさんのアドバイスの意味を理解してないのかも知れないですが def destroy post = Post.find(params[:id])   < postt → post if post.user_id == current_user.id post.destroy end end postt → post   の修正が反映されてないというのは、postt の時点でエラーになってないのはおかしいということでしょうか? せっかく返信してもらったのにうまく理解出来ずにすいません。
dokodoko

2019/12/22 10:50

解決しました。 未熟な私に対してstory_anikiさんが早い返信で私の質問に最後まで付き合ってくださってくれて感謝の気持ちしかありません。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問