2010-07-26 1 views
0

Я пытаюсь создать настраиваемый элемент управления для Formtastic, который занимает широту и долготу, однако я не уверен, как пройти пропущение имен методов. В идеале я бы следующее в semantic_form_for блоке:Пользовательское форматное управление с несколькими параметрами

f.input :latitude, :longitude, :as => :location 

Я также попытался прохождения с массивом:

f.input [:latitude, :longitude], :as => :location 

Но в обоих случаях это не удается - первый по количеству параметры, второй по первому параметру не является символом.

Есть ли способ передать два метода в #input, которые мне не хватает?

ответ

1

ОК, я разобрал это, написав a plugin for Formtastic.

Я добавил функцию multi_input, которая может принимать любое количество параметров и хэш (необязательных) параметров. Я также добавил тип map_input, который выводит элемент управления картой и JS (агностик рамки).

Подробнее по вышеуказанной ссылке.

0

Вы не можете передавать несколько методов на один вход. То, что вы можете сделать, это иметь аксессуар на вашей модели под названием, uh, lat_long или аналогичный, который может возвращать строку или массив или что-то еще в формате, который распознает ваше location_input и знает, как обрабатывать.

+0

Thanks Justin (для вашего ответа и Formtastic: D) - Я думал об этом, и я считаю, что вход через вход - это, вероятно, не то, что нужно сделать - он разрушает инкапсуляцию, если модели необходимо представить конкретные методы для просмотра вещи. Насколько я могу судить, мне лучше создать новый метод в SemanticFormBuilder, похожий на #input и #commit_button - возможно, #multi_input? – Codebeef