ruby-on-rails – 使用包含句点的参数进行Rails路由

在旧版本的Rails中,您可以使用包含句点的参数(通常保留用于将其与格式分开的内容),如下所示:

map.connect 'c/:domain.:format', :controller=>'home', :action=>'click_credit', :requirements => { :domain => %r([^/;,?]+) }

(很好的教程here)

但是,在Rails(2.3.x)的更现代版本中,我发现这个失败了 – :域名正在捕捉所有内容,并且:当/ c / amazon.com.html的请求进入时,格式为空白

有关如何修改它的任何想法?

谢谢,
汤姆

最佳答案 升级到rails 3应该可以解决您的问题.我在rails 3中尝试了你的路由,它工作正常(只需稍加改动就可以使用新的路由语法):

match 'c/:domain.:format', 
      :controller=>'home', 
      :action=>'click_credit', 
      :domain => %r([^/;,?]+)
# 'c/amazon.com.html' => domain: amazon.com , format: html

如果不能选择升级到rails 3,那么这可能有所帮助.按照this answer,我认为:要求哈希可能是罪魁祸首.尝试这条路线,看看它是否有效:

map.connect 'c/:domain.:format', 
            :controller=>'home', 
            :action=>'click_credit', 
            :domain => %r([^/;,?]+)
点赞