Rails,为什么link_to总是使用方法[GET],即使我已经指定了方法[POST]或[DELETE]



我看到其他一些人也问过这个问题,但我发现没有一个人得到满意的答案。

为什么railslink_to总是使用method :get,即使已经应用了一些其他方法,但是当您将link_to更改为button_to时,它开始工作?

以下面一行为例:<%= link_to "Log out", destroy_user_session_path, method: :delete, class:"link"%>vs<%= button_to "Log out", destroy_user_session_path, method: :delete, class:"link"%>

所有的rails文档告诉我method: :post应该工作。我甚至从那里复制了代码示例并编辑它以适应我的代码,但它仍然不起作用。虽然button_to是一个足够的解决方案,但让我的一半链接是链接,另一半按钮伪装成链接是很烦人的。

我使用的是rails 7.

谢谢。

更新:进一步搜索,我发现这个:https://github.com/rails/rails/issues/44185,它有一个解决方案,为我工作。

基本上,method已被弃用,新的方法是使用

data: { turbo_method: :delete, turbo_confirm: "Are you sure?" }

。如果这不起作用,请尝试运行命令

rails importmap:install
rails turbo:install stimulus:install

至少对我有用。

相关内容

最新更新