【问题标题】:Ruby on Rails: Delete link to redirects to show pageRuby on Rails:删除重定向到显示页面的链接
【发布时间】:2019-01-30 06:27:26
【问题描述】:

我正在开发一个 Rails 5.0 应用程序。这是一个遗留应用程序,多年来维护不善,天知道它没有正确更新什么(例如,它仍然使用public/ 结构来包含其所有样式表和 javascript 文件)。

我无法获取要执行的默认 rails delete 路由。

考虑以下控制器操作:

class Admin::PackagesController < ApplicationController

  def destroy
    @package = Package.find(params[:id])
    @package.destroy

    respond_to do |format|
      format.html { redirect_to root_url}
      format.xml  { head :ok }
    end
  end

但是当我调用以下链接时:

<%= link_to 'Destroy', ['admin', package], :confirm => 'Are you sure?', :method => :delete %>

它不调用销毁动作:它转到单个包的显示动作。

【问题讨论】:

  • 点击删除按钮时是否看到任何 JS 错误?大多数情况下,如果没有配置rails-ujs/jquery-ujs,请检查是否存在JS错误。
  • 您需要 UJS 才能使 :method => :delete 参数起作用。
  • @zasman 你能展示你的耙子吗routes | grep packages

标签: javascript ruby-on-rails ruby controller destroy


【解决方案1】:
<%= link_to 'Destroy', package_path(package), method: :delete %>

【讨论】:

  • 您对为什么这会解决问题有何看法?一行代码有点神秘。
  • 对不起。这是我对在 Rails 5 中编写删除链接的标准方法的理解,基于此:rubyplus.com/articles/2811-Rails-5-Basics-Delete-Article 然而,经过仔细考虑,我不确定它是否能解决您的问题。
  • 这或多或少等于我现在拥有的。 method: :delete 不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2015-08-12
相关资源
最近更新 更多