2015-12-16 2 views
2

Я пытаюсь реализовать time_select в Rails. Согласно docs первый аргумент должен быть object_name, а второй - именем метода. Это не имеет большого значения для меня.Rails time_select param brackets

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

form.time_select :base_content, :start_at, { ... 

Который производит следующее исключение: undefined method 'merge' for :start_at:Symbol

Но если бы я просто передать имя поля:

form.time_select :start_at, { ... 

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

start_at(5i) 

(5i) Что такое и как от нее избавиться?

+0

, что это имя столбца в время хранится под в БД? это 'base_content' или' start_at' или что-то еще? –

+0

Это 'start_at' –

+0

У вас есть драгоценный камень, как' comb_time_select' установлен? –

ответ

1

Вы делаете это правильно со второго пути. Значение 5i состоит в том, чтобы отметить, что параметр является значением минут, 4i будет часами. Но драгоценный камень combined_time_select, который вы установили, переопределяет метод time_select, чтобы поместить все время в один параметр - по какой-то причине он решает сохранить (5i) в конце имени параметра.

В контроллере вы должны использовать метод метод parse_time_select для разбора параметра перед его использованием, чтобы обновить модель

params[:base_content].parse_time_select! :start_time