【问题标题】:Ruby On Rails - CRUD - Destroy/Delete Not Working?Ruby On Rails - CRUD - 销毁/删除不起作用?
【发布时间】:2022-06-13 09:14:35
【问题描述】:

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

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 文件。查询?其他图书馆?

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

谢谢, 布莱恩

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

【问题讨论】:

  • 您是否构建了资产?通常bin/dev 与工头一起启动进程
  • 我的项目中没有'bin/dev'目录或可执行文件。
  • 可能您在应用程序创建过程中遇到了一些错误。所以你的应用没有完全创建

标签: javascript ruby-on-rails ruby crud turbo


【解决方案1】:

所以我的回答是没有答案——但我相信 mechnicov 说应用程序没有正确创建是正确的;我在 Linux 中重新创建了该项目,一切都按预期工作。显然我在 Windows 中的 Ruby/Rails 安装有问题。

【讨论】:

    【解决方案2】:

    我在官方文档之后也遇到了同样的问题。 经过数小时的研究后,我设法通过在 application.html.erb 中添加这一行来使 Turbo 功能正常工作。

    &lt;%= javascript_include_tag "turbo", type: "module" %&gt;

    老实说,我不明白为什么这是有效的,我也不能 100% 确定这是否是在 rails 7 中使用 turbo 的正确方法。

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 1970-01-01
      • 2012-03-28
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多