FriendlyID包括保留模块,其防止提供单词的列表被用作友好蛞蝓。您可以将您的静态路由添加到保留字数组中,以防止某人覆盖您的路由。
从FriendlyId RDocs
FriendlyId.defaults do |config|
config.use :reserved
# Reserve words for English and Spanish URLs
config.reserved_words = %w(new edit nueva nuevo editar)
end
如果您仍然希望允许其保留你就可以说FriendlyId会用蛞蝓的新方法标题。来自RDocs的这篇文章解释说,
列或方法?
FriendlyId始终使用方法作为slug文本的基础 - 不是列。乍一看,这可能听起来很混乱,但请记住Active Record为模型关联表中的每个列提供方法,这就是FriendlyId使用的方法。
这是一个使用一个自定义的方法来生成蛞蝓类的例子:
class Person < ActiveRecord::Base
friendly_id :name_and_location
def name_and_location
"#{name} from #{location}"
end
end
bob = Person.create! :name => "Bob Smith", :location => "New York City"
bob.friendly_id #=> "bob-smith-from-new-york-city"
您可以创建一个方法类似:title_with_id
或:title_with_rand
。这取决于你,以及你想如何看待slu gs。
您还需要确保您的routes.rb
已将您的静态路由列在友好标识的路由之前。第一个路由调度程序匹配的是请求将被处理的地方。
我添加了一个答案,但它会有助于查看您的'routes.rb'文件的相关行。 – 2013-05-01 19:16:08