Commit 32c7e42b authored by Felipe Artur's avatar Felipe Artur

Improve code

parent 5d428030
...@@ -24,7 +24,7 @@ class Groups::MilestonesController < Groups::ApplicationController ...@@ -24,7 +24,7 @@ class Groups::MilestonesController < Groups::ApplicationController
if create_milestones(project_ids, title) if create_milestones(project_ids, title)
redirect_to milestone_path(title) redirect_to milestone_path(title)
else else
render_new_with_error(@error) render_new_with_error(project_ids.empty?)
end end
end end
...@@ -42,12 +42,8 @@ class Groups::MilestonesController < Groups::ApplicationController ...@@ -42,12 +42,8 @@ class Groups::MilestonesController < Groups::ApplicationController
private private
def create_milestones(project_ids, title) def create_milestones(project_ids, title)
unless project_ids.present? return false unless project_ids.present?
@error = "Please select at least one project."
return false
end
begin
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
@projects.where(id: project_ids).each do |project| @projects.where(id: project_ids).each do |project|
Milestones::CreateService.new(project, current_user, milestone_params).execute Milestones::CreateService.new(project, current_user, milestone_params).execute
...@@ -55,15 +51,16 @@ class Groups::MilestonesController < Groups::ApplicationController ...@@ -55,15 +51,16 @@ class Groups::MilestonesController < Groups::ApplicationController
end end
true true
rescue => e rescue => e
@error = "Error creating milestone: #{e.message}."
flash.now[:alert] = "An error occurred while creating the milestone: #{e.message}"
false false
end end
end
def render_new_with_error(error) def render_new_with_error(empty_project_ids)
@milestone = Milestone.new(milestone_params) @milestone = Milestone.new(milestone_params)
flash[:alert] = error @milestone.errors.add(:project_id, "Please select at least one project.") if empty_project_ids
render :new render :new
end end
......
...@@ -10,6 +10,14 @@ ...@@ -10,6 +10,14 @@
= form_for @milestone, url: group_milestones_path(@group), html: { class: 'form-horizontal milestone-form gfm-form js-quick-submit js-requires-input' } do |f| = form_for @milestone, url: group_milestones_path(@group), html: { class: 'form-horizontal milestone-form gfm-form js-quick-submit js-requires-input' } do |f|
.row .row
- if @milestone.errors.any?
#error_explanation
.alert.alert-danger
%ul
- @milestone.errors.full_messages.each do |msg|
%li
= msg
.col-md-6 .col-md-6
.form-group .form-group
= f.label :title, "Title", class: "control-label" = f.label :title, "Title", class: "control-label"
......
...@@ -27,7 +27,7 @@ describe Groups::MilestonesController do ...@@ -27,7 +27,7 @@ describe Groups::MilestonesController do
it "redirects to new when there are no project ids" do it "redirects to new when there are no project ids" do
post :create, group_id: group.id, milestone: { title: title, project_ids: [""] } post :create, group_id: group.id, milestone: { title: title, project_ids: [""] }
expect(response).to render_template :new expect(response).to render_template :new
expect(flash[:alert]).to_not be_nil expect(assigns(:milestone).errors).to_not be_nil
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment