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
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users