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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

714閲覧

No route matches {:action=>"destroy" のエラーが解決しない

popi06

総合スコア3

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/04/20 04:30

編集2021/04/21 07:02

下記のエラーが出たので調べて、pathに引数を渡してみたのですがエラーが解決しません。何か他に改善策はありますでしょうか。

エラーの内容

ActionController::UrlGenerationError in Circles#show No route matches {:action=>"destroy", :circle_id=>"5", :controller=>"circle_users", :id=>nil}, missing required keys: [:id] <%= link_to '退会する', circle_circle_user_path(@circle, @circle_user), method: :delete, data:{ confirm: "サークル「#{@circle.name}」を退会します。よろしいですか?" } ,class:"btn btn-warning btn-lg" %> ・・・
route circle_circle_user DELETE /circles/:circle_id/circle_users/:id(.:format) circle_users#destroy
/app/views/circles/show.html.erb <% if @circle.circle_user?(current_user) %> <%= link_to '退会する', circle_circle_user_path(@circle, @circle_user), method: :delete, data:{ confirm: "サークル「#{@circle.name}」を退会します。よろしいですか?" } ,class:"btn btn-warning btn-lg" %> <!--サークルには所属していないが、ログインはしている場合 --> <% elsif current_user %> <% if @apply %> <%= link_to '申請取消', circle_apply_path(@circle, @apply), method: :delete, class:"btn btn-warning btn-lg" %> <% else %> <%= link_to '加入申請', circle_applies_path(@circle), method: :post, class:"btn btn-warning btn-lg" %> <% end %> <% end %>
/app/controllers/circles_controller.rb def show @circle = Circle.find(params[:id]) @circleposts = @circle.circleposts.paginate(page: params[:page]) @circleposts = Circlepost.where(circle_id: @circle.id).all end
route resources :circles do resources :applies, only:[:index, :create, :destroy] resources :circle_users, only:[:index, :create, :destroy] end
/app/controllers/circle_users_controller.rb def destroy @circle_user = CircleUser.find(params[:id]) @circle_user.destroy! @circle = Circle.find(params[:circle_id]) redirect_to circle_url(@circle) flash[:info] = "サークル「#{@circle.name}」を退会しました。" end

調べたこと

ルートをネストしている場合、引数は二つ以上必要、pathも単数形になるということですが、どちらも満たしていますのでどこが悪いのかわからない状態です。

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

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

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

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

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

guest

回答2

0

自己解決

コントローラーのfindをfind_byに変え、グループとグループユーザーのidを入れることで解決しました。

投稿2021/05/01 05:18

popi06

総合スコア3

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

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

0

@circle_userという変数はどこで用意していますでしょうか?なければnilです。

投稿2021/04/20 05:12

maisumakun

総合スコア145201

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

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

popi06

2021/04/20 05:19

こんにちは。showアクションに@circle_user = CircleUser.find(params[:id])を入れてみたら、Couldn't find CircleUser with 'id'=1というエラーが出てしまいます。
maisumakun

2021/04/20 05:23

どのcircle_userを削除したいのでしょうか?
popi06

2021/04/20 05:26

<% link_to '退会する'~ を押している、つまりcircle_user=1のユーザーを削除したいです。初学者なので質問の意図をつかめていない返答になっていたらすみません。
maisumakun

2021/04/20 05:28

> circle_user=1のユーザーを削除したいです。 すでに上でCouldn't find CircleUser with 'id'=1という結論が出ているかと思います。
popi06

2021/04/20 05:37

削除は成功しているみたいですが、どうしたらこのエラーは消えるのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問