Ruby On Rails - CRUD - 销毁/删除不起作用?

Bry*_*een 4 javascript ruby ruby-on-rails crud turbo

我已经完成了本教程的大部分内容,并且已经了解了添加删除文章功能的部分:

https://guides.rubyonrails.org/getting_started.html

...但是每当单击“删除”链接时,该文章都不会被删除。什么也没发生,并且发送了 GET 请求而不是 DELETE。

从 erb 文件中:

<%= link_to 'Destroy', article_path(@article), data:{
  turbo_method: :delete,
  turbo_confirm: 'Are you sure?'
} %>
Run Code Online (Sandbox Code Playgroud)

从控制器:

def destroy
    @article = Article.find(params[:id])
    @article.destroy
    redirect_to root_path, status: :see_other
end
Run Code Online (Sandbox Code Playgroud)

在尝试了SO和各种网页中提到的解决方案之后(将以下内容添加到我的“application.html.erb”文件中:

<%= javascript_include_tag 'application', "data-turbo-track": "reload" %>
Run Code Online (Sandbox Code Playgroud)

...我收到此错误:

ActionView::Template::Error (The asset "application.js" is not present in the asset pipeline.

我做了一些挖掘,发现应用程序脚手架(rails new blog在本例中)没有创建任何 Javascript 目录,更不用说向其中添加任何 JS 文件了。我可以自己添加它们,但我什至不知道 Rails 和/或 Turbo 正在寻找什么 JS 文件。jQuery?其他一些图书馆?

然而,理想情况下,我想知道如何正确构建应用程序,以便包含任何必要的 Javascript。

谢谢,布莱恩

编辑 我能够通过使用“非涡轮”删除项目的方法并使用“button_to”而不是“link_to”作为“删除”链接来使删除功能正常工作。但是 - 我仍然想知道为什么教程中所示的应用程序不能按预期工作,以及如何使用链接而不是按钮来触发项目删除(更不用说为什么使用 Turbo 不起作用)。

小智 5

我按照官方文档也遇到了同样的问题。经过几个小时的研究,我只需在application.html.erb.

<%= javascript_include_tag "turbo", type: "module" %>

老实说,我不明白为什么这会起作用,而且我也不能 100% 确定这是否是在 Rails 7 中使用 Turbo 的正确方法。