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

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

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

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

Q&A

解決済

2回答

1636閲覧

missing required keys: [:id] のエラー

popi06

総合スコア3

Ruby on Rails

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

0グッド

0クリップ

投稿2021/04/08 15:19

編集2021/04/09 11:49

サークル(グループ)に所属しようとするユーザーを承認するか、却下するかというシステムをネットを参考に作っていたところ、下記のエラーが発生しました。初学者なのでどの点を修正した方が良いか教えていただきたいです。

発生したエラー

ActionController::UrlGenerationError in Applies#index No route matches {:action=>"show", :apply_id=>1, :circle_id=>#<Circle id: 1, name: "テニス", created_at: "2021-04-06 12:51:55", updated_at: "2021-04-06 12:51:55", profile: nil, time: nil, place: nil, homepage: nil, admin: false>, :controller=>"circle_users", :user_id=>1}, missing required keys: [:id] <%= link_to "承認", circle_circle_user_path(app.circle, user_id: app.user.id, apply_id: app.id), method: :post, class:"mini-green-link-btn font-bold text-line-none" %>
/spec/system/users_edit_spec.rb ・・・ resources :circles do resources :applies, only: %i[index create destroy] resources :circle_users end ・・・ end
app/controllers/circle_users_controller.rb class CircleUsersController < ApplicationController def index @cicle_users = Circle_user.paginate(page: params[:page]) end def create @circle_user = Circle_user.create(circle_id: circle_user_params[:circle_id], user_id: circle_user_params[:user_id]) Apply.find(circle_user_params[:apply_id]).destroy! redirect_to circle_applies_url(@circle_user.circle), notice:"「#{@circle_user.user.username}」が、サークル:#{@circle_user.user.username}へ加入しました。" end def destroy @circle_user = Belonging.find(params[:id]) @circle_user.destroy! @circle = Circle.find(params[:community_id]) redirect_to circle_url(@circle), notice: "サークル「#{@circle.name}」を退会しました。" end private def circle_user_params params.permit(:circle_id, :user_id, :apply_id) end end
/app/views/applies/index.html.erb <div class="container applicant-wrapper"> <h3>承認待ちユーザ一覧</h3> <div class="row"> <div class="col-6"> <div class="user-icon-image"> <% @applies.each do |app| %> <div class="col-6"> <% if app.user.image.cached? %> <%= link_to app.user.image, user_path(app.user), class:"user-icon" %> <% else %> <%= link_to user_path(app.user) do %> <%= image_tag ("default.jpg"), class:"user-icon" %> <% end %> <% end %> </div> <%= link_to "承認", circle_circle_user_path(app.circle, user_id: app.user.id, apply_id: app.id), method: :post, class:"mini-green-link-btn font-bold text-line-none" %> <%= link_to "却下", circle_apply_path(app.circle, app), method: :delete, class:"mini-red-link-btn font-bold text-line-none" %> <br> </div> <% end %> </div> </div> ```ここに言語を入力 コード

routeの結果
circles#destroy
circle_applies GET /circles/:circle_id/applies(.:format) applies#index
POST /circles/:circle_id/applies(.:format) applies#create
circle_apply DELETE /circles/:circle_id/applies/:id(.:format) applies#destroy
circle_circle_users GET /circles/:circle_id/circle_users(.:format) circle_users#index
POST /circles/:circle_id/circle_users(.:format) circle_users#create
new_circle_circle_user GET /circles/:circle_id/circle_users/new(.:format) circle_users#new
edit_circle_circle_user GET /circles/:circle_id/circle_users/:id/edit(.:format) circle_users#edit
circle_circle_user GET /circles/:circle_id/circle_users/:id(.:format) circle_users#show
PATCH /circles/:circle_id/circle_users/:id(.:format) circle_users#update
PUT /circles/:circle_id/circle_users/:id(.:format) circle_users#update
DELETE /circles/:circle_id/circle_users/:id(.:format) circle_users#destroy
GET /circles(.:format)

> 引用https://qiita.com/tttaamm12/items/fbc2a3723ce3077adcbc#4%E7%94%B3%E8%AB%8B%E3%82%92%E5%8D%B4%E4%B8%8B%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E5%90%A6%E8%AA%8D%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E6%8A%BC%E3%81%99%E7%94%B3%E8%AB%8B%E5%BE%85%E3%81%A1%E3%83%AA%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E6%B6%88%E5%8E%BB%E3%81%95%E3%82%8C%E3%82%8B

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

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

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

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

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

guest

回答2

0

自己解決

<%= link_to "承認", circle_circle_user_path(app.circle, user_id: app.user.id, apply_id: app.id), method: :post, class:"mini-green-link-btn font-bold text-line-none" %>

のcircle_circle_user_pathの部分をcircle_circle_users_pathに変更したところ画面が表示されました。
初歩的なミスでした。

投稿2021/04/09 11:58

popi06

総合スコア3

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

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

0

CircleUsersController#show が実装されていないですね。

投稿2021/04/08 15:42

mather

総合スコア6753

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

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

popi06

2021/04/09 11:47

参考サイトにはshowページは書いておらず、エラーの一番上にActionController::UrlGenerationError in Applies#indexと書いてあったのでindexのエラーではないでしょうか?試しにcircleusersコントローラーにshowを追加してみましたがエラー内容は変わらず解決しませんでした。それともshowコントローラーに何か記述が必要なのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問