下記のエラーが出たので調べて、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も単数形になるということですが、どちらも満たしていますのでどこが悪いのかわからない状態です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。