プロが教える店舗&オフィスのセキュリティ対策術

root.rb

Rails.application.routes.draw do
get "posts/index" => "posts#index"
get "posts/new" => "posts#new"
get "posts/:id" => "posts#show"
post "posts/create" => "posts#create"
get "posts/:id/edit" => "posts#edit"
post "posts/:id/update" => "posts#update"
post "posts/:id/destroy" => "posts#destroy"

get "/" => "home#top"
get "about" => "home#about"
end

========================================================
posts_controller.rb

def destroy
# destroyアクションの中身を作成してください
@post = Post.find_by(id: params[:id])
@post.destroy

redirect_to("/posts/index")
end
========================================================
show.html.erb

<div class="main posts-show">
<div class="container">
<div class="posts-show-item">
<p>
<%= @post.content %>
</p>
<div class="post-time">
<%= @post.created_at %>
</div>
<div class="post-menus">
<%= link_to("編集", "/posts/#{@post.id}/edit") %>
<%= link_to("削除", "/posts/#{@post.id}/destroy", {method: "post"}) %>
</div>
</div>
</div>
</div>

以上のようなコードで、/posts/6/destroyのようなurlにアクセスすると、写真のようなエラーが出ました。ググってみて試しても解決されず、解決法を模索しております。

ちなみに、cloud9を使っております。

「No route matches [GE」の質問画像

A 回答 (1件)

あてずっぽうですが、「{method: "post"}」は文字列を渡すのではなくてシンボル「:post」を渡すのでは。

    • good
    • 0
この回答へのお礼

別のところに原因があり、解決しました。回答ありがとうございます。

お礼日時:2022/03/24 22:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!