开发者

How do I specify a default in a rails 2.3 route?

开发者 https://www.devze.com 2023-02-19 15:57 出处:网络
In my Rails 2.3.11 app, I want to specify that the default format for a route is :xml.According to the documentation I can do this using :defaults

In my Rails 2.3.11 app, I want to specify that the default format for a route is :xml. According to the documentation I can do this using :defaults

map.connect '/myroute', :controller => 'mycontroller',
                        :action 开发者_Go百科=> 'myaction',
                        :defaults => {:format => :xml}

The documentation specifically says this should work:

You can also define other defaults in a route by supplying a hash for the :defaults option. This even applies to parameters that are not explicitly defined elsewhere in the route.

But if I do that, then I get this error:

/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)

I see that a lighthouse ticket has been raised about this; a respondent notes that it works for resources but not named routes; an admin has incorrectly marked it as fixed because he's tested it on resources. Ho hum.

Elsewhere it is suggested that i do it like this:

map.connect '/myroute', :controller => 'mycontroller',
                        :action => 'myaction',
                        :format => :xml

but then if I test it

assert_generates '/myroute', :controller => 'mycontroller',
                             :action => 'myaction'

I get told that no route matches :controller => 'mycontroller', :action => 'myaction' - I have to put the format in by hand, so it isn't a default.

How do I specify a default in a rails 2.3 route? Do I need to get them to reopen the ticket and actually fix the bug? Is there any hope that that will happen now Rails 3 is out?


Hmmm that is pretty weird. I've used :defaults hash in a named route, and it worked for me. Can you try using a named route instead and see if it works ?

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

精彩评论

暂无评论...
验证码 换一张
取 消