How to Show Error Messages Next to Field

后端 未结 4 610
花落未央
花落未央 2020-12-13 19:16

I have a form with input fields/labels etc. How do I get the error message to show up next to the field? instead of clumped together at the top?

I am using devise, r

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-13 19:22

    How about this

    if you want to put the error message just beneath the text field, you can do like this

    .row.spacer20top
      .col-sm-6.form-group
        = f.label :first_name, "*Your First Name:"
        = f.text_field :first_name, :required => true, class: "form-control"
        = f.error_message_for(:first_name)
    

    What is error_message_for?
    --> Well, this is a beautiful hack to do some cool stuff

    # Author Shiva Bhusal
    # Aug 2016
    # in config/initializers/modify_rails_form_builder.rb
    # This will add a new method in the `f` object available in Rails forms
    class ActionView::Helpers::FormBuilder
      def error_message_for(field_name)
        if self.object.errors[field_name].present?
          model_name              = self.object.class.name.downcase
          id_of_element           = "error_#{model_name}_#{field_name}"
          target_elem_id          = "#{model_name}_#{field_name}"
          class_name              = 'signup-error alert alert-danger'
          error_declaration_class = 'has-signup-error'
    
          "
    "\ "#{self.object.errors[field_name].join(', ')}"\ "
    "\ ""\ "".html_safe end rescue nil end end

    Result

    Markup Generated after error

    
    
    

    Corresponding SCSS

      .has-signup-error{
        .signup-error{
          background: transparent;
          color: $brand-danger;
          border: none;
        }
    
        input, select{
          background-color: $bg-danger;
          border-color: $brand-danger;
          color: $gray-base;
          font-weight: 500;
        }
    
        &.checkbox{
          label{
            &:before{
              background-color: $bg-danger;
              border-color: $brand-danger;
            }
          }
        }
    

    Note: Bootstrap variables used here and, do not forget to Restart the server now and after any modification to the file in config dir.

提交回复
热议问题