diff options
| author | Xinhui | 2017-05-04 15:22:57 +0200 | 
|---|---|---|
| committer | Xinhui | 2017-05-04 15:23:04 +0200 | 
| commit | b54ab0a2321bbd0c5c6162a0d313800bb586a98d (patch) | |
| tree | 7ff40b3eb27699caf0a49c2483df8a9cb5dd9c28 | |
| parent | ce845b8053d4fc665ca700c064cbd6f276bc4e1d (diff) | |
| download | chouette-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.rb | 7 | ||||
| -rw-r--r-- | app/models/calendar.rb | 10 | 
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 | 
