Ruby on rails 如何在rails 2.3路由中指定默认值?

Ruby on rails 如何在rails 2.3路由中指定默认值?,ruby-on-rails,url-routing,Ruby On Rails,Url Routing,在我的Rails 2.3.11应用程序中,我想指定路由的默认格式为:xml。据我所知,我可以使用:默认值 文件中明确指出,这应该有效: 还可以通过为路由提供哈希来定义路由中的其他默认值 默认值选项。这甚至适用于不适用的参数 在路由的其他位置显式定义 但如果我这样做,我会得到这个错误: /Users/simon/myproject/vendor/rails/actionpack/lib/action_controller/routing/builder.rb:107:in `assign_rout

在我的Rails 2.3.11应用程序中,我想指定路由的默认格式为:xml。据我所知,我可以使用:默认值

文件中明确指出,这应该有效:

还可以通过为路由提供哈希来定义路由中的其他默认值 默认值选项。这甚至适用于不适用的参数 在路由的其他位置显式定义

但如果我这样做,我会得到这个错误:

/Users/simon/myproject/vendor/rails/actionpack/lib/action_controller/routing/builder.rb:107:in `assign_route_options':
format: No matching segment exists; cannot assign default (ArgumentError)
我看到有人提出了这个问题;被调查者指出,它适用于资源,但不适用于命名路线;管理员错误地将其标记为已修复,因为他已在资源上对其进行了测试。呵呵

其他地方建议我这样做:

map.connect '/myroute', :controller => 'mycontroller',
                        :action => 'myaction',
                        :format => :xml
但是如果我测试它

assert_generates '/myroute', :controller => 'mycontroller',
                             :action => 'myaction'
我被告知没有路由匹配:controller=>'mycontroller',:action=>'myaction'-我必须手动输入格式,因此它不是默认的


如何在rails 2.3路由中指定默认值?我是否需要让他们重新打开罚单并实际修复错误?现在Rails 3出炉了,这种情况还有希望吗?

嗯,这太奇怪了。我在命名路由中使用了:defaults散列,它对我很有效。你能试着改用命名路由,看看它是否有效吗

map.myroute '/myroute', :controller => 'mycontroller',
                    :action => 'myaction',
                    :defaults => {:format => :xml}

嗯,这太奇怪了。我在命名路由中使用了:defaults散列,它对我很有效。你能试着改用命名路由,看看它是否有效吗

map.myroute '/myroute', :controller => 'mycontroller',
                    :action => 'myaction',
                    :defaults => {:format => :xml}

2-3-stable没有补丁、文档或其他内容,这很可悲。2-3-stable没有补丁、文档或其他内容,这很可悲。