Rails6 Link_to Delete 显示 Showview
Posted
技术标签:
【中文标题】Rails6 Link_to Delete 显示 Showview【英文标题】:Rails6 Link_to Delete shows Showview 【发布时间】:2020-12-14 05:49:13 【问题描述】:昨天一切正常。在我恢复最后一个状态之前,我想了解实际破坏 jquery 数据方法的原因:删除并将其路由到显示视图。到目前为止,我什至不知道 jquery 是否正在工作。 Lightbox 运行良好,但像这样测试 jquery:Testing jquery in Rails 6 给了我一个隐藏的 div。
我已经通过“yarn add jquery”添加了 jquery - 没有错误
我已添加到我的 application.js:
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("jquery")
require("channels")
require("packs/lightbox")
这是我的 environment.js:
const environment = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide', new webpack.ProvidePlugin(
$: 'jquery',
jQuery: 'jquery',
Popper: ['popper.js', 'default']
))
module.exports = environment
第一个神秘的行为是,我必须在我的包目录中创建一个 lightbox.js 文件。在 application.js 中的简单导入不起作用。
接下来的事情是,我的删除方法的 link_to 中断并显示了显示视图:
<%= link_to 'Delete', gallery, :class => "btn btn-danger btn-sm text-white", method: :delete, data: confirm: "Are you sure?" %>
这给了我正确的 html:
<a class="btn btn-danger btn-sm text-white" data-confirm="Are you sure?
This action will delete all image assignments to this gallery." rel="nofollow" data-method="delete" href="/galleries/21">Delete</a>
这里是控制器方法:
# DELETE /galleries/1
# DELETE /galleries/1.json
def destroy
@gallery.destroy
respond_to do |format|
format.html redirect_to galleries_path, notice: 'Gallery was successfully deleted.'
format.json head :no_content
end
end
但它指向显示视图,所以我什至不知道 jquery 是否正常工作,因为它看起来不会,而且灯箱仍在工作。昨天 link_to 工作正常。
是否有任何清单文件以某种方式损坏的可能性?
【问题讨论】:
也许你的画廊控制器中有重定向?! 在销毁操作完成之前 如果我将 link_to 简单地更改为 button_to 它可以工作,但是确认不起作用。 能贴出控制器代码吗?可能会有所帮助,也许你错过了什么。 当然,但如前所述,昨天一切正常,所以我认为,jquery 搞砸了。向上 【参考方案1】:将此添加到 enviroment.js
Rails: ['@rails/ujs']
【讨论】:
加上这个没有区别。【参考方案2】:我创建了一个新项目,并将文件从旧的一个一个添加到新的。新的很完美,但我只通过纱线添加了 jquery。看来,如果您安装多个版本的 jquery (jquery gem / jquery-rails / jquery yarn) 并切换或删除它们,基本的 rails/ujs 就会失去它在 rails 6 中的功能。我无法在旧版本中恢复它项目,但很高兴知道,在 rails 6 覆盖 rails 基本功能时您必须小心。
【讨论】:
以上是关于Rails6 Link_to Delete 显示 Showview的主要内容,如果未能解决你的问题,请参考以下文章
如果 JS 可能被禁用,Rails 4 link_to :delete 的最佳方法是啥?
jQuery-turbolinks - link_to 确认:在 Rails 中多次弹出