【问题标题】:Delete all resource routing in Rails删除 Rails 中的所有资源路由
【发布时间】:2020-06-07 19:53:59
【问题描述】:

我的路由文件中有这一行:

resources :tags

我需要添加一条路线来一次性删除所有标签。我如何将它添加到我的路由文件中,并且相应的操作是否在同一个控制器中?

【问题讨论】:

  • 您可以随意设置。我不建议尝试找到一些方法来破解resources :tags 位,只需添加一个新路由并设置相应的控制器方法来处理您想要它执行的操作,您就可以开始了。仅仅因为您正在删除标签并不意味着它必须在标签控制器中,尽管由于它是如此密切相关,因此将它放在那里可能会有所帮助,但这实际上取决于您的应用程序。不过它可以去任何地方。
  • @RockwellRice 因此,如果我将链接写为:<%= link_to "Delete all tags", admin_tags_path, method: :delete, data: { confirm: 'Are you sure?' } %>。资源 :tags 是否会在仅以 params[:id] 为条件的情况下破坏操作?或者,如上所述,我需要单独的match 'tags', to: 'tags#destroy_all', via: :delete 行吗?
  • 您很可能需要一个单独的操作,除非您专门为每个标签发送请求,例如在循环或其他内容中,但恕我直言,这不是一个好主意。我认为要获得明确的答案,您需要提供有关您尝试设置的内容的更多详细信息。

标签: ruby-on-rails routes crud


【解决方案1】:

根据 Rails 约定,销毁操作保留用于销毁一条记录。所以在这里我会生成一个自定义路线。 我还将它链接到标签控制器。

resources :tags do 
  collection do 
    delete 'delete_all_tags'
  end
end
class TagsController < ApplicationController

  def delete_all_tags
    ...
  end
end

【讨论】:

  • 太棒了。今晚会试试这个。谢谢你。我不确定公约是什么,这是我问的原因之一
  • 我刚刚添加了这个,但rake routes 将路径显示为“destoy_all_tags_admin_tags”。有没有办法让它变成“admin_tags_destroy_all_tags”?
  • 这只是一个装饰性的东西,但你可以在路由中使用:as。看这里:guides.rubyonrails.org/routing.html#naming-routes 和这里:guides.rubyonrails.org/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多