我有一个操作模型,我试图使用delete方法删除一条记录。但我得到了一个路由错误。我不明白为什么Rails把删除操作看作是获取。下面是错误消息。
错误:No route matches [GET] "/home/delete_operation/1"
下面是我设置的逻辑。
查看:
<%= link_to 'Delete operation', home_delete_operation_path(id: operation.id), method: :delete, data: { confirm: 'Are you sure?', turbo: false }, class: "btn btn-dark btn-sm rounded-0" %>
控制器:
def delete_operation
@operation = Operation.find(params[:id])
@operation.destroy
end
路线:
delete 'home/delete_operation/:id', to: 'home#delete_operation', as: :home_delete_operation
Rails使用JS进行路由。因此,在Application.js中附加代码
Application.js
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"
//= require jquery3
//= require popper
//= require bootstrap-sprockets
//= require jquery_ujs
//= require chartkick
//= require Chart.bundle
import "chartkick"
import "Chart.bundle"
1条答案
按热度按时间ffdz8vbo1#
在link_to标记中用这个
data: { turbo_method: :delete, turbo_confirm: 'Are you sure?' }
替换现有的data: { confirm: 'Are you sure?', turbo: false }
,它工作了。