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的主要内容,如果未能解决你的问题,请参考以下文章

Rails link_to 方法: :delete

如果 JS 可能被禁用,Rails 4 link_to :delete 的最佳方法是啥?

Rails link_to 不路由

jQuery-turbolinks - link_to 确认:在 Rails 中多次弹出

Ruby/Rails-链接(完整元素)在视图*.erb中显示Edit Destroy Delete记录

Rails 是不是支持带有方法 post 的 link_to?