Skip to content

Commit 745f704

Browse files
committed
better error message
1 parent 0d7c424 commit 745f704

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

dashboard/app/controllers/levels_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ def update_blocks
8888
def update
8989
if level_params[:name] && @level.name.downcase == level_params[:name].downcase
9090
# do not allow case-only changes in the level name because that confuses git on OSX
91-
params[:level][:name] = @level.name
91+
@level.errors.add(:name, 'Cannot change only the capitalization of the level name (it confuses git on OSX)')
92+
render json: @level.errors, status: :unprocessable_entity
93+
return
9294
end
9395
if @level.update(level_params)
9496
render json: { redirect: level_url(@level) }.to_json

dashboard/app/views/levels/_form.html.haml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
#validation-error{style: 'background-color: yellow'}
2+
- if @level.errors.any?
3+
%h2
4+
= pluralize(@level.errors.count, "error")
5+
prohibited this level from being saved:
6+
%ul
7+
- @level.errors.full_messages.each do |msg|
8+
%li= msg
19
= form_for [@level], method: @level.new_record? ? :post : :patch, remote: true do |f|
210
= f.hidden_field :type, value: @type_class.to_s.presence || @level.type
311
.field
@@ -23,14 +31,6 @@
2331
= render partial: 'levels/editors/dsl', locals: {f: f} if @level.is_a? DSLDefined
2432
.actions
2533
= f.submit
26-
#validation-error
27-
- if @level.errors.any?
28-
%h2
29-
= pluralize(@level.errors.count, "error")
30-
prohibited this level from being saved:
31-
%ul
32-
- @level.errors.full_messages.each do |msg|
33-
%li= msg
3434
:javascript
3535
#{render partial: 'shared/ajax_submit', formats: [:js], locals: {form_selector: @level.new_record? ? '#new_level' : '.edit_level'}}
3636
function make_selection_handler(flag) {

dashboard/test/controllers/levels_controller_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,11 @@ class LevelsControllerTest < ActionController::TestCase
454454

455455
post :update, id: level.id, level: {name: 'ORIGINAL NAME'}
456456

457+
assert_response 422
458+
459+
# error message
460+
assert assigns(:level).errors[:name]
461+
457462
level = level.reload
458463
# same name
459464
assert_equal 'original name', level.name

0 commit comments

Comments
 (0)