从stringex act_as_url中排除单词?

时间:2014-11-05 13:39:14

标签: ruby-on-rails ruby stringex

我使用Stringex为ActiveRecord模型生成slugs。我的代码如下:

product.rb

class Product < ActiveRecord::Base
  acts_as_url :name, url_attribute: :url, sync_url: true, limit: 50, replace_whitespace_with: "_"
  def to_param
    slug
  end
end

的routes.rb

get '', to: 'product#show',:as => 'product'

因此,如果产品的网址为search,则路由将为/search,并且我已经有/search路由。我想排除一些stringex不应该用作url属性的单词。

1 个答案:

答案 0 :(得分:3)

您可以使用:blacklist方法的acts_as_url属性。默认情况下,添加blacklist: %w{new search} blacklist属性的值为%w{new},以避免与rails默认new路由冲突。

您的代码应如下所示:

<强> product.rb

class Product < ActiveRecord::Base
 acts_as_url :name, url_attribute: :url, sync_url: true,\
  limit: 50, replace_whitespace_with: "_", blacklist: %w{new search}
 def to_param
   slug
 end
end