Rails路由与日期
我的问题是关于在rails应用程序的路由中按日期使用filter,目前我已经准备好了匹配routes.rb文件中日期模式的规则,它看起来像这样:
match "itineraries/:day/:month/:year" => "itineraries#index", :constraints => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ } match "itineraries/new/:day/:month/:year" => "itineraries#new", :constraints => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ } resources :itineraries match '/:controller(/:action(/:id))' root :to => "itineraries#index"
那个匹配例如/ itineraries / 01/01/2011,问题来自我从资源生成路由,例如,itineraries_path(:year => 2011,:month => 1,:day => 1)生成:
/行程?天= 1个月= 1&year2011
代替
/行程/ 01/01/2011
有没有办法将匹配规则放在资源映射中?
好吧,简短回答是你的路线确实存在,但它尚未命名(检查rake路线以说服自己)这就是为什么你不能像那样调用它(使用itineraries_path
)
所以,正确的方法是例如:
match "itineraries/:day/:month/:year" => "itineraries#index", :constraints => { :year => /\d{4}/, :month => /\d{2}/, :day => /\d{2}/ }, :as => "itineraries_date"
(注意:as
一部分)
现在,如果你打电话给itineraries_date_path(11,12,1998)
它会给你的itineraries/11/12/1998
itineraries_date_path(11,12,1998)
itineraries/11/12/1998