friendly_id,从历史中删除slug

时间:2012-07-08 01:18:48

标签: ruby-on-rails activerecord friendly-id

我正在将friendly_idhistory模块一起用于名为page的模型,并且希望能够从friendly_id_slugs表中删除slugs,以便它们不再存在重定向,可以再次使用。

我想出了几个可能的解决方案,但我不确定如何继续:

  1. friendly_id_table创建一个新模型和控制器,并按照我对其他任何模型的方式执行操作
  2. destroy_slug添加一个pages_controller.rb动作,查找slug并将其销毁 - 但是,我不确定如何加载slug,也许FriendlyId::Slug.find()
  3. FriendlyId命名空间中创建一个控制器 - 不知道如何执行此操作
  4. 任何人都可以提出建议作为继续或如何完成#2或#3的最佳方式吗?谢谢!

1 个答案:

答案 0 :(得分:5)

我目前正在实现这一点:

# slug_controller.rb
class SlugsController < ApplicationController
  def destroy
    @slug = FriendlyId::Slug.find(params[:id])
    @slug.destroy
    redirect_to :back, :notice => "The URL <strong>/#{@slug.slug}</strong> has been removed"
  end
end

# routes.rb
resources :slugs, :only => :destroy

# in a view
<%= link_to 'Delete slug', slug_path(slug.id), :method => :delete %>