2011-04-14 92 views

回答

3

像这样的事情也许

#config/routes.rb 
match "/:random_id" => "topics#show", :constraints => {:random_id => /([a-zA-Z]|\d){3,6}/} 

将3-6随机字母/数字的随机字符串匹配您的主题控制器的显示方法。确保在此匹配器上方声明其他资源,因为诸如“http:// localhost:3000/pies”之类的内容将路由到Topics#show而不是Pies#index。

要为您的主题随机的网址,你可以去这样的事情:

#app/models/topic.rb 
before_create :generate_random_id 

def generate_random_id 
    #generates a random hex string of length 6 
    random_id = SecureRandom.hex(3) 
end 
+0

帕特里克,我没有工作;在我创建了一个主题后,URL显示为:(http:// localhost:3000/topics/1)我需要的是url创建后应该是:localhost:3000 /“random string”。请帮忙! – iosgcd 2011-04-15 18:45:24

+0

还在寻找答案:( – iosgcd 2011-04-24 18:28:01

0

帕特里克答案应该工作 - 但它仅覆盖路由传入的请求。 如果您仍在使用标准路线(例如topic_path)来创建链接,它仍将使用正常路线。

如果您运行耙路线,您应该看到用random_id创建的路线的名称。 (您可能需要用它来命名:如=>“random_route”)

如果你调用,而不是标准topic_path你应该得到的路线,你是后