When writing forms with Rails, it's common to use render :new
for errors of validation. With render :new
, unlike redirect_to
, you can show a new
page again without reset of form values. It's pretty useful in the aspect of UX.
#create
action is like:
def create
if @foo.save
redirect_to foos_index_path
else
render :new
end
end
However, when query params is specified at a new
page , there is an issue. After rendering of new page, query params will disappear. How can I hold query params to the second time new page?
It's possible by giving query params to forms.
If its new page's form is like below:
= form_for @foo, url: sign_in_path do |f|
/ ...
Just give a query param to path helper method.
= form_for @foo, url: sign_in_path(query: @query) do |f|
/ ...
@query
is passed by controller's #new
action.
def new
@query = params[:query]
end
It worked fine for me.
Top comments (1)
Awesome. Just what I needed.