在旧版本的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([^/;,?]+)