2011-12-28 93 views
0

假設我有一個模型,名爲Car,我可以在/cars/:id上訪問我的車展活動。第一張唱片將會生活在/cars/1,但我不想要它。我想永久鏈接長度爲8個數字,不管車的身份證是什麼。因此,例如,第一個固定鏈接將是00000001而不是1將對象固定長度改爲預定義長度的大小

我不知道如何實現該功能,在模型中可以做什麼(to_param方法)或者在路徑中做什麼。

請幫助我,如果你可以,我欣賞任何提示。

回答

1

您是否嘗試過使用friendly_id寶石。如果您可以使用它,我強烈建議您使用它。從代碼中的註釋:

FriendlyId總是使用一種方法作爲slug文本的基礎 - 而不是 列。乍一看,這可能聽起來很混亂,但請記住,活動記錄爲模型的關聯 表中的每列提供了方法,這就是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" 

所以,我想你可以這樣做:

class Car < AR::Base 
    friendly_id :id_of_length_eight 
    def id_of_length_eight 
    # logic here to add leading zeroes 
    end 
end