Search code examples
ruby-on-railsrubyforms

Ruby on Rails : how to implement Cancel button in form_tag


I have a basic form using the form_tag helper working fine, but I want to add a cancel button, what is the syntax for doing this? I want the cancel button to appear as a button, not a link, then take the user to a different URL (indicating they don't want to submit the form).

TY, Fred


Solution

  • If you want to clear/reset the form fields, do what weltschmerz suggests.

    However, I'd generally expect a Cancel button to not clear the form, but to take me away from the form, meaning I don't plan on submitting it.

    If you want the latter, I'd just make a link (or button) to the page you want to go to upon cancelling, such as :

    =link_to 'Cancel', my_page_path
    

    Or if you want a button:

    = button_tag "Cancel", :type => 'button'
    

    Then add this to your controller:

    # before_filter for Rails 4.x and prior
    before_action :check_for_cancel, :only => [:create, :update]
    
    def check_for_cancel
      if params[:commit] == "Cancel"
        redirect_to my_page_path
      end
    end