在我的Rails 2.3.11应用程序中,我想指定一个路由的默认格式是:xml。根据{{3}},我可以使用:defaults
map.connect '/myroute', :controller => 'mycontroller',
:action => 'myaction',
:defaults => {:format => :xml}
文档明确说明这应该有效:
您还可以通过提供哈希来定义路由中的其他默认值 :defaults选项。这甚至适用于非参数 在路线的其他地方明确定义。
但如果我这样做,那么我就会收到这个错误:
/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)
我看到the documentation已经提出了这个问题;一名受访者指出,它适用于资源而非命名路线;管理员错误地将其标记为已修复,因为他已在资源上对其进行了测试。哼哼。
在其他地方建议我这样做:
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会出现?
答案 0 :(得分:0)
map.myroute '/myroute', :controller => 'mycontroller',
:action => 'myaction',
:defaults => {:format => :xml}