The default rails scheme for highlighting errors is to wrap the
field in a div, but that changes the structure of the page and can
change the meaning of CSS rules applied to the fields.
As an alternative we now apply a class to the fields, and use that
in the CSS to apply a highlight.
/* Rules for highlighting fields with rails validation errors */
/* Rules for highlighting fields with rails validation errors */
-.field_with_errors {
- padding: 2px;
- background-color: #ff7070;
- display: inline-block;
-}
-
.formError {
display: inline-block;
padding: 5px 10px;
.formError {
display: inline-block;
padding: 5px 10px;
padding: 2px 5px;
margin: 0;
width: 200px;
padding: 2px 5px;
margin: 0;
width: 200px;
+
+ &.field_with_errors {
+ border: 2px solid #ff7070;
+ }
--- /dev/null
+ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
+ class_attr_index = html_tag.index 'class="'
+
+ if class_attr_index
+ html_tag.insert class_attr_index+7, 'field_with_errors '
+ else
+ html_tag.insert html_tag.index(/\/?>/), ' class="field_with_errors"'
+ end
+end
assert_response :success
assert_template 'new'
assert_response :success
assert_template 'new'
- assert_select "form > fieldset > div.form-row > div.field_with_errors > input#user_email"
+ assert_select "form > fieldset > div.form-row > input.field_with_errors#user_email"
end
def test_user_create_submit_duplicate_email_uppercase
end
def test_user_create_submit_duplicate_email_uppercase
assert_response :success
assert_template 'new'
assert_response :success
assert_template 'new'
- assert_select "form > fieldset > div.form-row > div.field_with_errors > input#user_email"
+ assert_select "form > fieldset > div.form-row > input.field_with_errors#user_email"
end
def test_user_create_submit_duplicate_name
end
def test_user_create_submit_duplicate_name
assert_response :success
assert_template 'new'
assert_response :success
assert_template 'new'
- assert_select "form > fieldset > div.form-row > div.field_with_errors > input#user_display_name"
+ assert_select "form > fieldset > div.form-row > input.field_with_errors#user_display_name"
end
def test_user_create_submit_duplicate_name_uppercase
end
def test_user_create_submit_duplicate_name_uppercase
assert_response :success
assert_template 'new'
assert_response :success
assert_template 'new'
- assert_select "form > fieldset > div.form-row > div.field_with_errors > input#user_display_name"
+ assert_select "form > fieldset > div.form-row > input.field_with_errors#user_display_name"
end
def test_user_save_referer_params
end
def test_user_save_referer_params
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
- assert_select "form#accountForm > fieldset > div.form-row > div.field_with_errors > input#user_display_name"
+ assert_select "form#accountForm > fieldset > div.form-row > input.field_with_errors#user_display_name"
# Changing name to one that exists should fail, regardless of case
new_attributes = user.attributes.dup.merge(:display_name => users(:public_user).display_name.upcase)
# Changing name to one that exists should fail, regardless of case
new_attributes = user.attributes.dup.merge(:display_name => users(:public_user).display_name.upcase)
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
- assert_select "form#accountForm > fieldset > div.form-row > div.field_with_errors > input#user_display_name"
+ assert_select "form#accountForm > fieldset > div.form-row > input.field_with_errors#user_display_name"
# Changing name to one that doesn't exist should work
new_attributes = user.attributes.dup.merge(:display_name => "new tester")
# Changing name to one that doesn't exist should work
new_attributes = user.attributes.dup.merge(:display_name => "new tester")
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
- assert_select "form#accountForm > fieldset > div.form-row > div.field_with_errors > input#user_new_email"
+ assert_select "form#accountForm > fieldset > div.form-row > input.field_with_errors#user_new_email"
# Changing email to one that exists should fail, regardless of case
user.new_email = users(:public_user).email.upcase
# Changing email to one that exists should fail, regardless of case
user.new_email = users(:public_user).email.upcase
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
assert_template :account
assert_select ".notice", false
assert_select "div#errorExplanation"
- assert_select "form#accountForm > fieldset > div.form-row > div.field_with_errors > input#user_new_email"
+ assert_select "form#accountForm > fieldset > div.form-row > input.field_with_errors#user_new_email"
# Changing email to one that doesn't exist should work
user.new_email = "new_tester@example.com"
# Changing email to one that doesn't exist should work
user.new_email = "new_tester@example.com"
assert_response :success
assert_template 'user/new'
assert_equal response.headers['Content-Language'][0..1], localer.to_s[0..1] unless localer == :root
assert_response :success
assert_template 'user/new'
assert_equal response.headers['Content-Language'][0..1], localer.to_s[0..1] unless localer == :root
- assert_select "form > fieldset > div.form-row > div.field_with_errors > input#user_email"
+ assert_select "form > fieldset > div.form-row > input.field_with_errors#user_email"
assert_no_missing_translations
end
end
assert_no_missing_translations
end
end
end
assert_response :success
assert_template 'user/new'
end
assert_response :success
assert_template 'user/new'
- assert_select "form > fieldset > div.form-row > div.field_with_errors > input#user_display_name"
+ assert_select "form > fieldset > div.form-row > input.field_with_errors#user_display_name"
assert_no_missing_translations
end
end
assert_no_missing_translations
end
end