无法使用 Ruby on rails 删除表中的项目

Posted

技术标签:

【中文标题】无法使用 Ruby on rails 删除表中的项目【英文标题】:Cant delete item in table With Ruby on rails 【发布时间】:2021-07-18 12:14:20 【问题描述】:

我试图从我使用脚手架生成的表中删除一个项目。我做了一些研究,发现这是 Windows 机器的一个常见问题,它不会删除它只是获取它的项目。这是我在控制器中的销毁方法

 def destroy
    @measurment.destroy
    respond_to do |format|
      format.js
      format.html  redirect_to measurments_url, notice: "Measurment was successfully destroyed." 
      format.json  head :no_content 
    end
  end

这是我在下面尝试的修复。我在索引页面的销毁链接中添加了 remote: true 和 class: "delete"

<td><%= link_to 'Destroy', measurment, method: :delete, data:  confirm: 'Are you sure?', remote: true , class: "delete" %></td>
      </tr>
  

然后我使用 yarn add jquery 添加了 jquery 并添加了 //= require jquery //= 需要 rails-ujs 到 application.js 文件。最后,我在测量文件夹中创建了一个名为 destroy.js.erb 的文件。这包含:

$('.delete').bind('ajax:success', function()
    $(this).closest('tr').fadeOut();
);

毕竟我仍然无法从表中删除项目。任何帮助将不胜感激

【问题讨论】:

你的意思是measurement? ;) 哎呀..是的,我愿意 【参考方案1】:

使用 Button_to 代替 link_to 有效

【讨论】:

【参考方案2】:

如果您使用服务器生成的 javascript 响应 (SJR),您希望直接执行操作而不是添加事件处理程序:

<%= link_to 'Destroy', measurment, method: :delete, data:  confirm: 'Are you sure?', remote: true , class: "delete", id: "measurment-#measurment.id" %>
$("#measurment-<%= @meaurement.id %>").closest('tr')
                                     .fadeOut();

SJR 的工作方式是将返回的 javascript 弹出到脚本标记中,并在请求完成后立即执行。然而,这段代码完全不知道是哪个元素触发了原始事件,所以你必须得到 hacky 和唯一的 id。

如果您改为发送 JSON 请求,您可以编写更好的 javascript,而无需让您的服务器负责更改页面。

<%= link_to 'Destroy', measurment, method: :delete, 
            data:  
              confirm: 'Are you sure?', 
              remote: true, 
              type: 'json' 
            , class: "delete" %>

// place this code in your packs or the assets pipeline
$(document).on('ajax:success', '.delete', function()
  $(this).closest('tr').fadeOut();
);

【讨论】:

以上是关于无法使用 Ruby on rails 删除表中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何正确销毁 ruby​​ on rails 中的关联记录?

使用 Ruby on Rails 一键删除所有未批准的帖子

作物哈希结构:Ruby on rails

无法从 Rails 4 和 PSQL 9.3 中的表中删除索引

如何存储和比较:ActiveRecord 中的符号(Ruby on Rails)

如何从 ruby​​ on rails 上的现有远程 oracle 数据库中获取数据