

**やりたいこと**  
・ユーザーの退会処理を実装したい。(is_deleted)  
環境:Rails 7.0.5, ruby 3.1.2p20, AWS EC2で管理。

**対象のソースコード**

[code]

    <%= link_to "退会", users_hide_user_path(current_user), data: { turbo_method: :delete, turbo_confirm: '本当に退会しますか？' } %>
    
[/code]

**コントローラ**

[code]

     def hide
        @user = User.find(params[:id])
        @user.update(is_deleted: true) #trueは退会してるかのことtrue=退会ずみ, false=退会済みでない
        reset_session
        flash[:notice] = "またのご利用心よりお待ちしております。"
        redirect_to root_url
      end
    
[/code]

**ルーティング**

[code]

     resources :users do
        member do
          delete :hide, as: 'users_hide'
        end
     end
    
[/code]

**エラーメッセージ**  
・Routing Error No route matches [GET] "/users/1/hide"

色々調べた結果rails7から"method: :delete"の書き方が変わったので上記ソースコードのように記述すべきとのこと。  
しかしTurboをオンにする必要がある。  
しかしTurboをオンにすると次はjQueryのajax処理ができずビュー上でエラーになる。

app/javascript/application.js

[code]

    import $ from 'jquery'
    window.jQuery = $
    window.$ = $
    
    // Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
    // jQueryはturboと仲悪い
    // import "@hotwired/turbo-rails"
    import "controllers"
    
[/code]

// import "@hotwired/turbo-rails"をコメントアウトすればjQeryは動くがmethod:
:deleteが動かずにGETになってしまう。  
コメントアウトを解除するとその逆になる。

参考URL:  
[Turboがいろいろと厄介 | Rails 7.0 + Ruby
3.1でゼロからアプリを作ってみたときにハマったところあれこれ](https://qiita.com/jnchito/items/5c41a7031404c313da1f#turbo%E3%81%8C%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%81%A8%E5%8E%84%E4%BB%8B)

解決方法が知りたいです。


CC BY-SA 4.0
2023-06-29T01:22:44.690
95407
2023-06-29T04:30:47.407
2023-06-29T04:30:47.407
3060
58381
question
javascript ruby-on-rails ruby jquery
rails7の「Turbo」と「link_to」と「jQuery」の相性悪くて困っています。