Hi --
On Thu, 13 Mar 2008, Phlip wrote:
>
> Railsers:
>
> Our versions are Rails 1.2.3 on ruby 1.8.6 (2007-09-23 patchlevel 110).
>
> routes.rb contains this:
>
> map.connect ''/song/:filename*extension'', :controller
=> ''frogs'',
> :action =>
''index''
>
> and our test contains this:
>
> frog_id = frog(:african_bull).id
> assert_routing "/song/#{frog_id}.mp3", :controller =>
''frogs'',
> :action =>
''index'',
> :filename =>
"#{frog_id}",
> :extension =>
[''mp3'']
>
> That looks perfectly correct, right? Here''s the error message:
>
> The recognized options <{"extension"=>[".mp3"],
> "action"=>"index",
> "controller"=>"frogs",
> "filename"=>"1"}> did not match
<{"extension"=>["mp3"],
> "action"=>"index",
> "controller"=>"frogs",
> "filename"=>"1"}>, difference:
<{"extension"=>["mp3"]}>
>
> Ooookay. It says the "difference" is the part that''s
exactly the same -
> "extension"=>["mp3"]!
Yeah, I''ve always loved that one :-)
> How to fix?
*extension is mopping up the dot, because filename matches everything
up to but not including a dot, and *extension gets everything else
(and it all gets put into one string, because the dot doesn''t separate
elements inside the glob).
So you need either :filename.*extension in the route string, or
[''.mp3''] in the test.
David
--
Upcoming Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS, April 14-17 2008, New York City
CORE RAILS, June 24-27 2008, London (Skills Matter)
See http://www.rubypal.com for details. Berlin dates coming soon!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---