

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

### エラーの内容

[code]

    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" %>
        
    ・・・
    
[/code]

[code]

    route
    
    circle_circle_user DELETE /circles/:circle_id/circle_users/:id(.:format)                                           circle_users#destroy
    
[/code]

**/app/views/circles/show.html.erb**

[code]

    <% 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 %>
    
[/code]

**/app/controllers/circles_controller.rb**

[code]

    def show
      @circle = Circle.find(params[:id])
      @circleposts = @circle.circleposts.paginate(page: params[:page])
      @circleposts = Circlepost.where(circle_id: @circle.id).all
    end
    
[/code]


CC BY-SA 4.0
2021-04-20T05:12:53.393
75396
2021-04-22T03:01:44.070
2021-04-20T05:24:06.203
3060
44916
question
ruby-on-rails
No route matches {:action=>"destroy"　のエラーが解決しない


退会ということはユーザはログインしてる current_user 固定なんですよね？

[code]

    resources :circles do
      delete 'leave', on: :member
    end
    
[/code]

とか circle が主語となるアクションを追加して

[code]

    <%= link_to '退会する', leave_circle_path(@circle), method: :delete ... 
    
[/code]

でいいのではないですか？

そうするとクリックした時に Circles#leave にとんできて  
削除するユーザは current_user で取得して削除処理すればいいので  
ユーザはパラメータで渡す必要はないと思います


CC BY-SA 4.0
2021-04-22T03:01:44.070
75442
2021-04-22T03:01:44.070
75396
answer