2013-09-26 96 views
1

我升级的应用程序2.3/x到3.2.XRails的路由从轨发送非静态默认值

我有这样的老路子:

map.calendar '/calendar/:year/:month', :controller => 'calendar', :action => 'index', :year => Time.now.year, :month => Time.now.month 

耙路线产生这样的:

calendar  /calendar/:year/:month {:controller=>"calendar", :action=>"index"} 

我不确定这里的年份和月份是什么,它们是否默认值在没有给出的情况下发送?什么是它的rails 3.2.x语法。

我想是这样的:

match '/calendar/:year/:month' => 'calendar#index', :defaults => {:year => Time.now.year, :month => Time.now.month} 

在轨3.2.x中生成的路线是:

/calendar/:year/:month(.:format) calendar#index {:year=>2013, :month=>9} 

帮助我走出这个路线正确转换。

回答

0

您应该添加as关键看你match电话:

match '/calendar/:year/:month' => 'calendar#index', :defaults => {:year => Time.now.year, :month => Time.now.month}, :as => 'calendar' 
+0

我这样做,以及和路线产生了 日历/calendar/:year/:month(.:format)日历#{指数:year => 2013,:month => 9} 为什么这个哈希值是存在的,当在rails中生成路由时,情况并非如此2.3.x –

+0

@NaveenAgarwal是什么? –

+0

请参阅更新的评论。 –