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

gkl3eglg  于 2023-03-06  发布在  Java
关注(0)|答案(3)|浏览(149)

我已经浏览了本教程的一大部分内容,并且已经到了添加删除文章功能的部分:
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?'
} %>

从控制器:

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

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

<%= javascript_include_tag 'application', "data-turbo-track": "reload" %>

...我得到这个错误:
ActionView::Template::Error (The asset "application.js" is not present in the asset pipeline.
我做了一些调查,发现应用程序搭建者(在这个例子中是rails new blog)没有创建任何Javascript目录,更不用说向它们添加任何JS文件了。我自己添加它们很好,但是我甚至不知道Rails和/或Turbo在寻找什么JS文件。JQuery?其他库?
然而,理想情况下,我想知道如何正确地搭建一个应用程序,以便包括任何必要的Javascript。
谢谢,布莱恩

***EDIT***我可以通过使用“non-turbo”方法删除项目并使用“button_to”而不是“link_to "作为”Delete“链接来获得删除功能。但是--我仍然想知道为什么教程中显示的应用程序不能按预期工作,以及如何使用链接而不是按钮来触发项目删除(更不用说为什么使用turbo不起作用了)。

hc2pp10m

hc2pp10m1#

在官方文档之后,我也遇到了同样的问题。在做了几个小时的研究之后,我设法通过在application.html.erb中添加这一行来使turbo功能工作。
<%= javascript_include_tag "turbo", type: "module" %>
老实说,我不明白为什么这是工作,我不是100%肯定这是否是正确的方式使用turbo在rails 7。

0ve6wy6x

0ve6wy6x2#

所以我的答案是没有答案---但是我相信麦什尼科夫说的应用程序没有被正确地创建是正确的;我在Linux中重新创建了这个项目,一切都按预期运行。显然我在Windows中的Ruby/Rails安装有问题。

mbskvtky

mbskvtky3#

我能让这个工作!
在我尝试东西的过程中,我偶然提到了turbo-rails gem。我找到了一个有效的解决方案:
1.在application.html.erb文件中添加以下内容:

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

1.将gem "turbo-rails", "~> 1.0"添加到宝石文件
1.运行bundle install
1.运行bin/rails turbo:install
注意:不确定最后一步是否必要,但我遵循了here中的说明
使用这些步骤,导轨指南中的代码将与确认对话框一起工作。🎉

相关问题