On Fri, Feb 22, 2008 at 9:20 AM, Maurício Linhares <[EMAIL PROTECTED]> wrote: > Hi David, > > First, using the controller doesn't work also :) > > After some debugging here i found out why it was trowing the error, > the RedirectTo matcher uses the > ActionController::Routing::Routes.recognize_path method to discover if > a path exists and this method takes two parameters, the path and the > "environment" that the path is being requested. When my code was being > matched, the redirect_to matcher generated the right path > "/pages/test" and sent it two the recognize_path method, but this path > is a Restful one and only GET, PUT and DELETEs are allowed and the > RedirectTo matcher didn't send any :method param, so when the path is > being recognized and no method is sent it will never be recognized and > thus that weird error is thrown. > > A simple way to solve this issue is change the path_hash method at the > RedirectTo matcher to include the HTTP method being called: > > def path_hash(url) > path = url.sub(%r{^\w+://[EMAIL PROTECTED], "").split("?", 2)[0] > ActionController::Routing::Routes.recognize_path path, :method => > :get > end > > As you can only redirect to GET requests, this should not be a > problem. Should i file a patch for this?
That would be great, thanks! Please do review http://rspec.lighthouseapp.com/projects/5645/how-to-file-a-ticket before you do. Thank you, David > > Now, the two methods are working fine =D > > > it 'Should redirect to the new page' do > do_post > > response.should redirect_to( page_path( :action => 'show', :id > => @static_page.permalink ) ) > > response.should redirect_to( :action => 'show', :id => > @static_page.permalink ) > end > > > -- > > Maurício Linhares > http://alinhavado.wordpress.com/ (pt-br) | > http://codeshooter.wordpress.com/ (en) > João Pessoa, PB, +55 83 8867-7208 > > > > > On Fri, Feb 22, 2008 at 11:25 AM, David Chelimsky <[EMAIL PROTECTED]> wrote: > > On Fri, Feb 22, 2008 at 8:10 AM, Maurício Linhares > > > > <[EMAIL PROTECTED]> wrote: > > > > > > > Using the "path" method the spec passes, but i don't use the path > > > method on my controller. First, here's my controller code: > > > > > > def create > > > @static_page = @event.static_pages.build(params[:static_page]) > > > > > > respond_to do |format| > > > if @static_page.save > > > flash[:notice] = 'Page was successfully created.' > > > format.html { redirect_to(:action => 'show', :id => > > > @static_page.permalink ) } ## thats what i'm testing agains > > > format.xml { render :xml => @static_page, :status => > > > :created, :location => @static_page } > > > else > > > format.html { render :action => "new" } > > > format.xml { render :xml => @static_page.errors, :status => > > > :unprocessable_entity } > > > end > > > end > > > end > > > > > > And here is the spec: > > > > > > > > > it 'Should redirect to the new page' do > > > do_post > > > response.should be_redirect > > > response.should redirect_to( page_path( :action => 'show', :id > > > => @static_page.permalink ) ) ## this one, with the page_path goes > > > fine > > > > > > response.should redirect_to( :action => 'show', :id => > > > @static_page.permalink ) ## this one, without the page_path doesn't > > > work > > > end > > > > > > It seems that the redirect_to matcher doesn't recognize the current > controller. > > > > Ah. I missed that the initial example was missing the controller > > because I was focused on the error message, which is obviously a red > > herring. > > > > Try adding the controller to the hash: > > > > esponse.should redirect_to( :controller => 'static_pages', :action => > > > > 'show', :id => @static_page.permalink ) > > > > If that works, then please submit a bug report to the tracker (that > > redirect_to does not work with action + id unless you specify the > > controller). > > > > Thanks, > > David > > > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users