我已经浏览了本教程的一大部分内容,并且已经到了添加删除文章功能的部分:
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不起作用了)。
3条答案
按热度按时间hc2pp10m1#
在官方文档之后,我也遇到了同样的问题。在做了几个小时的研究之后,我设法通过在
application.html.erb
中添加这一行来使turbo功能工作。<%= javascript_include_tag "turbo", type: "module" %>
老实说,我不明白为什么这是工作,我不是100%肯定这是否是正确的方式使用turbo在rails 7。
0ve6wy6x2#
所以我的答案是没有答案---但是我相信麦什尼科夫说的应用程序没有被正确地创建是正确的;我在Linux中重新创建了这个项目,一切都按预期运行。显然我在Windows中的Ruby/Rails安装有问题。
mbskvtky3#
我能让这个工作!
在我尝试东西的过程中,我偶然提到了
turbo-rails
gem。我找到了一个有效的解决方案:1.在
application.html.erb
文件中添加以下内容:1.将
gem "turbo-rails", "~> 1.0"
添加到宝石文件1.运行
bundle install
1.运行
bin/rails turbo:install
注意:不确定最后一步是否必要,但我遵循了here中的说明
使用这些步骤,导轨指南中的代码将与确认对话框一起工作。🎉