aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinhui2017-05-04 15:22:57 +0200
committerXinhui2017-05-04 15:23:04 +0200
commitb54ab0a2321bbd0c5c6162a0d313800bb586a98d (patch)
tree7ff40b3eb27699caf0a49c2483df8a9cb5dd9c28
parentce845b8053d4fc665ca700c064cbd6f276bc4e1d (diff)
downloadchouette-core-b54ab0a2321bbd0c5c6162a0d313800bb586a98d.tar.bz2
Fix can't edit or create calendar due to 3 parts date_select
Refs #3298
-rw-r--r--app/controllers/calendars_controller.rb7
-rw-r--r--app/models/calendar.rb10
2 files changed, 13 insertions, 4 deletions
diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb
index d18e165d2..5370d9cbb 100644
--- a/app/controllers/calendars_controller.rb
+++ b/app/controllers/calendars_controller.rb
@@ -45,14 +45,13 @@ class CalendarsController < BreadcrumbController
end
def ransack_contains_date
- # 3 parts to date object, in order to use in ransackable_scopes
+ date =[]
if params[:q] && !params[:q]['contains_date(1i)'].empty?
- date =[]
['contains_date(1i)', 'contains_date(2i)', 'contains_date(3i)'].each do |key|
- date << params[:q][key]
+ date << params[:q][key].to_i
params[:q].delete(key)
end
- params[:q]['contains_date'] = Date.parse(date.join('-'))
+ params[:q]['contains_date'] = Date.new(*date)
end
end
diff --git a/app/models/calendar.rb b/app/models/calendar.rb
index cd945a67f..91a17e853 100644
--- a/app/models/calendar.rb
+++ b/app/models/calendar.rb
@@ -118,9 +118,18 @@ class Calendar < ActiveRecord::Base
end
end
+ def flatten_date_array attributes, key
+ date_int = %w(1 2 3).map {|e| attributes["#{key}(#{e}i)"].to_i }
+ Date.new(*date_int)
+ end
+
def periods_attributes=(attributes = {})
@periods = []
attributes.each do |index, period_attribute|
+ # Convert date_select to date
+ ['begin', 'end'].map do |attr|
+ period_attribute[attr] = flatten_date_array(period_attribute, attr)
+ end
period = Period.new(period_attribute.merge(id: index))
@periods << period unless period.marked_for_destruction?
end
@@ -223,6 +232,7 @@ class Calendar < ActiveRecord::Base
def date_values_attributes=(attributes = {})
@date_values = []
attributes.each do |index, date_value_attribute|
+ date_value_attribute['value'] = flatten_date_array(date_value_attribute, 'value')
date_value = DateValue.new(date_value_attribute.merge(id: index))
@date_values << date_value unless date_value.marked_for_destruction?
end