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.
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!