I made these changes appropriately:
Now in ‘app/controllers/users_controller.rb‘ I have this code:
def reset
respond_to do |format|
format.html # reset.html.erb
end
end
def send_reset
respond_to do |format|
if @user.errors.empty?
...
else
format.html { render :action => 'reset' }
end
end
end
Now in ‘config/routes.rb’ I have this code:
resources :users do
collection do
get 'reset'
post 'reset'
get 'send_reset'
post 'send_reset'
end
end
If I submit the form (‘app/views/users/reset.html.erb’) related to changes
<%= form_tag( send_reset_users_path, :method => :post ) do %>
<%= text_field_tag :email %>
<%= submit_tag("Send") %>
<% end %>
the browser URL become ‘…/users/send_reset‘ but I want ‘…/users/reset‘ (I think the problem is around the ‘format.html { render :action => ‘reset’ }’ code that does not render correctly the action) or, maybe, the route.
In few words I aim to use the ‘send_reset’ action like I use, for example, the ‘update’, ‘create’ or ‘destroy’ actions (from scaffold), in my case that is without creating the ‘app/views/users/send_reset.html.erb’ file but just calling the action method to handle my issue. How can I make this?
The default Rails URL scheme is
Rename your controller action from
to
and rename the views and routes to match this change.
However you are already using reset for get and send_reset for Post but you want them to be the same just do different things if you ask for the page or send a form POST.