質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

619閲覧

railsアプリで投稿内容を削除したい

hakoco_12

総合スコア11

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2019/09/05 11:36

#エラーメッセージ
Routing Error
No route matches [GET] "/blog/2/destroy"

#やりたいこと
idが2の@postを削除したいです。
postsコントローラーのdestroyアクションに繋がるルーティングはPOSTにしています。
link_to メソッドでルーティングをpostに指定しましたが、うまくいきません。

間違っている箇所を教えていただけるとありがたいです。

#書いているコード

routes

1 get 'contacts/new' 2 get 'contacts/create' 3 4 get 'blog' => "posts#index" 5 get 'blog/new' => "posts#new" 6 post 'blog' =>"posts#create" 7 get 'blog/:id' => "posts#show" 8 post 'blog/:id/destroy' => "posts#destroy" 9 get 'blog/:id/edit' => "posts#edit" 10 post 'blog/:id/update' => "posts#update" 11 12 get 'access' => "top#access" 13 get 'lesson' => "lesson#index" 14 get 'profile' => "top#profile" 15 get 'users/show' 16 17 root 'top#index'

PostsController

1class PostsController < ApplicationController 2 def index 3 @posts = Post.all 4 end 5 6 def show 7 @id = params[:id] 8 @post = Post.find_by(id: params[:id]) 9 end 10 11 def new 12 end 13 14 def create 15 params[:title] 16 params[:content] 17 @post = Post.new(title: params[:title], content: params[:content]) 18 @post.save 19 redirect_to("/blog") 20 end 21 22 def edit 23 @post = Post.find_by(id: params[:id]) 24 end 25 26 def update 27 @post = Post.find_by(id: params[:id]) 28 @post.title = params[:title] 29 @post.content = params[:content] 30 @post.save 31 redirect_to("/blog") 32 end 33 34 def destroy 35 @post =Post.find_by(id: params[:id]) 36 @post.destroy 37 redirect_to("/blog") 38 end 39end

html

1<%= form_tag({contoller: :posts, action: :update}, method: :post) do %> 2 <div class="new-post-submit"> 3 <textarea name="title" rows="1" cols="80"><%= @post.title %></textarea> 4 <textarea name="content" rows="8" cols="80"><%= @post.content %></textarea> 5 <input type="submit" value="edit"> 6 </div> 7<% end %> 8<%= link_to "削除", "/blog/#{@post.id}/destroy" method: :post%>

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

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

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

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

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

guest

回答1

0

<%= link_to "削除", "/blog/#{@post.id}/destroy" method: :post%>

<%= link_to "削除", "/blog/#{@post.id}/destroy", method: :post%>

投稿2019/09/05 20:26

winterboum

総合スコア23329

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

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

hakoco_12

2019/09/05 23:58

回答ありがとうございます。 , を入れましたが、同じエラー内容が表示されてしまいます…。 他におかしなところはありますでしょうか?
winterboum

2019/09/06 00:42

はて、、、 念の為 <%= link_to "削除", "/blog/#{@post.id}/destroy" method: :post%> の部分のhtmlを貼っていただけますか? なお、削除は本当は method delete がお作法です。
hakoco_12

2019/09/06 00:52 編集

本来はDELETEなのですね。あとで修正いたします、ありがとうございます。 HTMLは <a rel="nofollow" data-method="post" href="/blog/17/destroy">削除</a> となっています。 (この部分であっておりますでしょうか?また、id:2のpostは削除してしまったので新しく作っています)
winterboum

2019/09/06 08:13

合ってる。 う〜〜む、、、わからん。 rails routes の結果を教えて下さい
hakoco_12

2019/09/06 12:38

contacts_new GET /contacts/new(.:format) contacts#new contacts_create GET /contacts/create(.:format) contacts#create blog GET /blog(.:format) posts#index blog_new GET /blog/new(.:format) posts#new POST /blog(.:format) posts#create GET /blog/:id(.:format) posts#show GET /blog/:id/destroy(.:format) posts#destroy GET /blog/:id/edit(.:format) posts#edit POST /blog/:id/update(.:format) posts#update access GET /access(.:format) top#access lesson GET /lesson(.:format) lesson#index profile GET /profile(.:format) top#profile users_show GET /users/show(.:format) users#show root GET / top#index rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create rails routesの結果はこのようになっています。 原因がわかればありがたいです・・・
winterboum

2019/09/06 12:45

destroy が有るのは GET /blog/:id/destroy だけですね。 質問に掲示sれている、config/routes.rb ではなく、別の質問の時の古いroutes.rbの結果に見えます。 掲示通りのroutes.rbかもう一度確認して下さい
hakoco_12

2019/09/06 13:29

contacts_new GET /contacts/new(.:format) contacts#new contacts_create GET /contacts/create(.:format) contacts#create blog GET /blog(.:format) posts#index blog_new GET /blog/new(.:format) posts#new POST /blog(.:format) posts#create GET /blog/:id(.:format) posts#show POST /blog/:id/destroy(.:format) posts#destroy GET /blog/:id/edit(.:format) posts#edit POST /blog/:id/update(.:format) posts#update access GET /access(.:format) top#access lesson GET /lesson(.:format) lesson#index profile GET /profile(.:format) top#profile users_show GET /users/show(.:format) users#show root GET / top#index rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create 大変失礼いたしました。 この質問で掲示しているroutes.rbに戻して、rails routesした結果は上のようになります。
winterboum

2019/09/06 14:03

そうしたら、エラーはどうなりました?
hakoco_12

2019/09/07 13:00

遅くなってすみません。 Routing Error No route matches [GET] "/blog/17/destroy" のままです、、、
winterboum

2019/09/07 13:45

<a rel="nofollow" data-method="post" href="/blog/17/destroy">削除</a> であるにも関わらず No route matches [GET] "/blog/17/destroy" であるとすると、もうしわけない、私にも原因がわかりません。
hakoco_12

2019/09/08 16:51

いろいろとご親切に教えていただきありがとうございました。このエラーがもし解決したら、またご報告させていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問