删除了 Rails Asset Pipeline - 如何复制 rails-ujs 帮助程序方法



我们在工作中使用 Rails 5.2,并且资产管道已被删除。作为 Rails 新手,我不断遇到方法无法按预期工作的问题。

例如,以下link_to数据提取作为 GET 请求而不是 DELETE 进行处理,并且不显示确认。

<%=link_to 'Delete', admin_enhanced_object_media_item_path(@enhanced_object, media_item), method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn--danger' %>

下面的SO问答帮助我理解它与缺少rails-ujs或jquery依赖项有关,我能够通过替换为button_to来恢复部分功能。

Rails 的link_to方法:在应该删除时进行 GETing

这已对方法错误进行了排序,但仍然不显示确认警报。

我可以在 Rails 源代码(coffeescript)中看到缺少的方法 https://github.com/rails/rails/tree/master/actionview/app/assets/javascripts/rails-ujs/features

鉴于我无法安装 rails-ujs,我可以在我的应用程序 javascript 文件中用香草 JS 替换这些辅助方法。谁能指出我在哪里完成或解释的例子?我希望其他人在没有 Rails 资产管道的情况下工作,但希望保持对此处列出的不显眼的 JavaScript 助手的访问:https://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#rails-ujs-event-handlers

所以这是相当古老的,自 5.2 以来发生了很多变化,但我发现自己处于几乎完全相同的情况,我认为随着越来越多的人对资产管道的变化做出不同的决定,它会变得越来越重要。

首先要做的是将@rails/ujs添加到您选择的捆绑器中(例如Webpack,vite等)。在我写这篇文章的时候,有两个分支,评论中提到的一个是后面的两个主要版本。这个似乎仍在更新中。

之后,您需要导入它(可能导入入口点)并调用它

import Rails from '@rails/ujs'
Rails.start()

这将允许您使用所有UJS方法(或者在我的情况下,在删除资产管道后修复所有损坏的方法)。包为 32kb(未压缩或缩小)。您很可能通过仅从 github 代表那里获取所需的方法并将它们复制到您的项目中来减少它。实际功能在过去几年中没有太大变化。

最新更新