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

时间:2011-03-24 09:30:04

标签: ruby-on-rails url-routing

在我的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会出现?

1 个答案:

答案 0 :(得分:0)

嗯,这很奇怪。我已经使用过:默认哈希在命名路由中,它对我有用。您可以尝试使用命名路由,看看它是否有效吗?

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