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