【问题标题】:rails "delete - destroy" does not automatically refresh the itemrails“删除 - 销毁”不会自动刷新项目
【发布时间】:2013-06-07 22:39:32
【问题描述】:

我有一个带有删除按钮的脚手架。

当我单击删除按钮时,该项目不会刷新以显示它已被删除。

控制器中有基本的redirect_to:

  def destroy
    @print = Print.find(params[:id])
    @print.destroy
    redirect_to prints_url, :notice => "Successfully Deleted Print Order."
  end

我怀疑是导致问题的 javascript 部分

这是我的 application.js 中列出的内容

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require jquery-fileupload
//= require_tree .

我的应用程序.html.erb

   <%= javascript_include_tag "application" %>

可能是什么问题?

编辑:视图

<%= link_to t('.destroy', :default => t("helpers.links.destroy")),
              print,
              :method => :delete,
             :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
              :class => 'btn btn-mini btn-danger',
              :remote => true %>

【问题讨论】:

  • 你的删除按钮是什么样的?您确定将:method 设置为:delete
  • 是的。方法是正确的。我会更新上面的信息。

标签: ruby-on-rails ruby-on-rails-3


【解决方案1】:

你需要删除:remote =&gt; true,否则页面不会刷新。如果您想使用 AJAX 删除该项目而不刷新页面,那么您需要使用 Javascript 自己删除该项目。我建议从删除 :remote =&gt; true 开始,直到您真的需要异步执行操作。

【讨论】:

    【解决方案2】:

    您在远程方法结束时重定向,这意味着返回页面的响应不会有太大帮助!相反,您应该删除重定向并添加一个带有操作名称的 javascript 文件(destroy.rjsdestroy.js.erb,具体取决于您的环境)。

    然后将在操作结束时调用 javascript 文件,您可以在该文件中添加刷新包含已更改项目的 div 所需的脚本。

    或者,不要将其作为 javascript 链接执行,删除 :remote =&gt; true 它将被视为 html 请求并且重定向将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2012-12-30
      相关资源
      最近更新 更多