Pablo Alonso GarcĂa
2009-May-12 22:09 UTC
ActionController::RoutingError -> Functional Tests and :path_prefix in routes.rb
Hi,
I''m trying to write a test for my ProfilesController, which I mapped
in my routes.rb, using:
map.resource :profile, :path_prefix => '':account''
This way, I have routes like:
profile POST /:account/profile
{:controller=>"profiles", :action=>"create"}
formatted_profile POST /:account/profile.:format
{:controller=>"profiles", :action=>"create"}
new_profile GET /:account/profile/new
{:controller=>"profiles", :action=>"new"}
formatted_new_profile GET /:account/profile/new.:format
{:controller=>"profiles", :action=>"new"}
edit_profile GET /:account/profile/edit
{:controller=>"profiles", :action=>"edit"}
formatted_edit_profile GET /:account/profile/edit.:format
{:controller=>"profiles", :action=>"edit"}
GET /:account/profile
{:controller=>"profiles", :action=>"show"}
GET /:account/profile.:format
{:controller=>"profiles", :action=>"show"}
PUT /:account/profile
{:controller=>"profiles", :action=>"update"}
PUT /:account/profile.:format
{:controller=>"profiles", :action=>"update"}
DELETE /:account/profile
{:controller=>"profiles", :action=>"destroy"}
DELETE /:account/profile.:format
{:controller=>"profiles", :action=>"destroy"}
My problem is that, when running the following test:
def test_new
get :new
assert_redirected_to new_session_path
end
I get the error:
test_new(ProfilesControllerTest):
ActionController::RoutingError: No route matches
{:controller=>"profiles", :action=>"new"}
...
I can''t understand why ''get :new'' can''t find
that route and, on the
other hand, ''rake routes'' does recognize it.
This part of my application works fine (including :url => {:controller
=> ''profiles'', :action => ''create''} in
the form_for tags). Though, I
don''t know how to write the proper tests. Do I have to pass any extra
parameter to ''get''? Do you think is it a bit silly to use this
mapping?
Thanks in advance,
Pablo.