【发布时间】:2011-04-14 23:03:02
【问题描述】:
【问题讨论】:
标签: ruby-on-rails-3 random url-routing
【问题讨论】:
标签: ruby-on-rails-3 random url-routing
可能是这样的
#config/routes.rb
match "/:random_id" => "topics#show", :constraints => {:random_id => /([a-zA-Z]|\d){3,6}/}
会将 3-6 个随机字母/数字的随机字符串与主题控制器的 show 方法匹配。确保在此匹配器上方声明其他资源,因为诸如“http://localhost:3000/pies”之类的内容将路由到 Topics#show 而不是 Pies#index。
要为您的主题生成随机 url,您可以这样做:
#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
【讨论】:
Patricks 的回答应该有效 - 但它只涵盖路由传入请求。 如果您仍在使用标准路由(例如 topic_path)来创建链接,它仍将使用普通路由。
如果您运行 rake 路由,您应该会看到您使用 random_id 创建的路由的名称。 (您可能需要使用 :as => 'random_route' 为其命名)
如果你调用它而不是标准的 topic_path 你应该得到你所追求的路线
【讨论】: