When redirecting use
flash[:warning] = "flash will make the message available to the next request"
When rendering use
flash.now[:warning] = "flash will make the message available to the same request"
You're never too old to learn something new.
-Redirect is a method that is used to issue the error message in case the page is not found or it issues a 302 to the browser. Whereas, render is a method used to create the content.
-Redirect is used to tell the browser to issue a new request. Whereas, render only works in case the controller is being set up properly with the variables that needs to be rendered.
-Redirect is used when the user needs to redirect its response to some other page or URL. Whereas, render method renders a page and generate a code of 200.
-Redirect is used as:
redirect_to: controller => ‘users’, :action => ‘new’
-Render is used as:
render: partial
render: new -> this will call the template named as new.rhtml without the need of redirecting it to the new action.
Why did all this started?
I noticed that following code using flash.now was not working. However, as per API documentation, it should have worked fine.
flash.now[:warning] = "User cannot be deleted."
redirect_to admin_users_path
However, following code without using .now did work.
flash[:warning] = "User cannot be deleted."
redirect_to admin_users_path
The reason is as follows based on ruby guide information:
When redirecting use
flash[:warning] = "flash will make the message available to the next request"
When rendering use
flash.now[:warning] = "flash will make the message available to the same request"