【问题标题】:Cant delete item in table With Ruby on rails无法使用 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? ;)
  • 哎呀..是的,我愿意

标签: jquery ruby-on-rails ruby database sqlite


【解决方案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();
    });
    

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多