I have a fairly complex view that has multiple forms, lots of validations on those forms, paginations, and other features. When validations fail, I like to use render because then you can be more specific about what errors occurred in the forms. However, when I use render different compiler errors crop up such as “undefined method `total_pages’ for []:Array” and “undefined model_name”. Is this a situation when I have to use redirect_to or is it feasible to somehow work around the errors that are coming up when the view is being rendered. Thanks a bunch!
Share
You should grasp things in their perspective.
Why is
renderused instead ofredirect:when you use
render, you pass the instantiated objectthis object, newly created or updated, received some params
when attempting to save the object, validation was triggered and, if unsuccessful, added errors to the current instance
so your object in memory contains validation errors.
But when you use redirect, you restart with a fresh stack which doesn’t know anything about the former object in memory, there could not be any magic:
either the object is saved and you can get the persisted data from database
or if it’s not saved, you can have some information you previously stored in session
To answer your question a bit closer: before you use render, you have to instantiate all objects needed by the page.
It’s just logic the view fails if the expected instance variables are missing.