respond_to for custom form submissions

24 views
Skip to first unread message

fugee ohu

unread,
Feb 24, 2017, 1:10:31 PM2/24/17
to Ruby on Rails: Talk
my controller is user_posts_controller.rb
it's views are in /app/views/user/posts

when a form submission fails to save the object i wanna redirect back to the custom pathed form i came from but the controller code has render :new

how do i redirect to the calling path of new and pass parameters

Walter Lee Davis

unread,
Feb 25, 2017, 10:40:03 AM2/25/17
to rubyonra...@googlegroups.com
After an error, you really don't want to redirect, just re-render. That's how you keep all the request variables alive. If you need to render a different form from a different path, just pass in that path to your controller. Remember, in the error side of the if/else, there is an implicit render template: [:new or :edit]. So you can also write render template: 'path/to/custom/view' there. The rest of the variables will already be there.

Walter
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/7d236498-eaa6-4eed-8007-0f02acba3b99%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Joe Guerra

unread,
Feb 28, 2017, 10:51:41 AM2/28/17
to Ruby on Rails: Talk
I think you can use :back.

redirect_to :back

Walter Lee Davis

unread,
Feb 28, 2017, 5:21:00 PM2/28/17
to rubyonra...@googlegroups.com
When you redirect, you lose all of the current environment (including the error, why it happened, etc.). This is almost never what you want to do. You want to fall through to re-render the form, and it will properly display the error messages and allow the user to recover without re-entering all of the data again. Use the rails scaffold command to make a new model/controller/view. Look at what it does. This is the expected behavior that you differ from at your peril!

Walter
> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/a613cd5b-b474-41ee-85cb-42da2f274d54%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages