Named Scopes and Failed Actions

Hello all,

I have a named scope ‘profile’ that points to ‘users/edit’ (there is no id as I’m using Authlogic). When the update fails, I want to keep the same url /profile and keep my error messages. How do I do this? Using render :action => ‘edit’ or ‘profile’ (I set up a profile template to test it) Redirect allows me to keep the url but I lose the error messages.

Am I doing something ultra simple wrong?

Thank you

-ants

Ants Pants wrote in post #958778:

Hello all,

I have a named scope 'profile' that points to 'users/edit' (there is no id as I'm using Authlogic).

Did you mean a named *route*? This doesn't make sense with a named scope.

When the update fails, I want to keep the same url /profile and keep my error messages. How do I do this? Using render :action => 'edit' or 'profile' (I set up a profile template to test it) Redirect allows me to keep the url but I lose the error messages.

Try render :template instead.

Best,

I did mean route, yes (it was late, I was tired)

render :template => is the same as :action =>, it changes the url to users/:id, I want to keep my /profile url upon failure.

Please quote when replying.

Ants Pants wrote in post #958927:

I did mean route, yes (it was late, I was tired)

render :template => is the same as :action =>, it changes the url to users/:id, I want to keep my /profile url upon failure.

...which render :template will do. Did you try it yet?

Best,

Yes, I have tried it as I said. It was one of the first things I did try. As I said, it acts like render :action and this is from the docs … Template rendering works just like action rendering except that it takes a path relative to the template root. The current layout is automatically applied.

You have a named route for the edit-action, but don’t use one for the update-action, right? I think there is the answer to find. Make a new post-only named route for your update action.

Or don't use another route but define your resources with :as =>

“profile”

resources :users, :as => "profile"

Could this work for you?

Ants Pants wrote in post #959111:

Best, -- 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@googlegroups.com. To unsubscribe from this group, send email to

rubyonrails-talk+unsubscribe@googlegroups.com<rubyonrails-talk%2Bunsubscribe@googlegroups.com>

. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

Yes, I have tried it as I said. It was one of the first things I did try.

As I said, it acts like render :action and this is from the docs ..... Template rendering works just like action rendering except that it takes a path relative to the template root. The current layout is automatically applied.

Hmm. My recollection is that render :action or render :template should not change the URL of the already selected controller action, so you should still see the profile URL. I'm not sure why this wouldn't work, unless you've got some JavaScript doing funny things, or unless I'm misremembering.

Best,