Ruby on Rails - многопараметрическое присваивание и attr_accessor и 12_hour_time - PullRequest
3 голосов
/ 18 мая 2011

Хорошо, я постепенно начинаю понимать это, но мне нужна дополнительная помощь.

Я использую time_select в своем представлении, поэтому я имею дело с многопараметрическим назначением.Проверьте.

<%= pt.time_select :time, :twelve_hour => true, :minute_step => 5 %>

НО я делаю непослушную вещь и использую ее с атрибутом, которого нет в базе данных:

attr_accessor time

Поэтому, поскольку он не может смотреть на БД, он не может соединить воедино то, каким должно быть многопараметрическое присвоение, и поэтому я получаю следующую ошибку:

1 error(s) on assignment of multiparameter attributes

Таким образом, я использую информацию, которую я нашел здесь :

  composed_of :time,
            :class_name => 'DateTime',
            :mapping => [%w(DateTime to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }

Другие полезные ссылки: rubyonrails.org | apidock.com

Это устраняет ошибку, но теперь проблема в том, что используемый мной плагин, я думаю, не работает должным образом.Я использую http://code.google.com/p/rails-twelve-hour-time-plugin/.Цель в том, чтобы я пытался выбрать время, чтобы у меня было 3 выпадающих списка: hh: mm am/pm.

Итак, вопрос: как мне нужно настроить * 1031?* чтобы он был правильно конвертирован плагином?ИЛИ есть ли лучший метод для этого безумия?

Я не уверен, какие картографы / конструкторы / конвертеры мне нужны.Прямо сейчас объект сохраняет часы и минуты, за исключением того, что час не преобразован в 24 часа (о которых плагин должен заботиться, я думал).

1 Ответ

5 голосов
/ 20 мая 2011

Проблема заключалась в том, что я не следовал статье должным образом.Я должен был использовать модель Time.

  composed_of :time,
            :class_name => 'Time',
            :mapping => [%w(Time to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }

Похоже, это распространенная проблема.Для получения более подробной информации об этом ссылка .Есть предложение сделать:

class Whatever < ActiveRecord::Base
  ...

  attr_accessor :arrival_time
  columns_hash["arrival_time"] = ActiveRecord::ConnectionAdapters::Column.new("arrival_time", nil, "time")
end

Я все еще работаю над ошибками, но я обновлю это, когда получу что-нибудь работающее.

...