Создать форму для массива с хэшами с помощью formtastic - PullRequest
1 голос
/ 07 апреля 2011

У меня проблемы с формастастом. Сначала я постараюсь набросать ситуацию настолько хорошо, насколько смогу.

У меня есть модель с именем onlinescore, которая имеет атрибуты publisher, id и некоторые другие базовые. Однако одним из его атрибутов является массив с urls. Эти urls являются хешами с таким содержимым:

{"url" => "http://www.example.com", "description" => "blabla"}

Итак, массив выглядит так:

[{"url" => "http://www.example0.com", "description" => "blabla0"},
{"url" => "http://www.example1.com", "description" => "blabla1"},
{"url" => "http://www.example2.com", "description" => "blabla2"}]

Сейчас я делаю форму для создания нового onlinescore, и для этого мне нужен способ сбора входных данных для этого массива. Я хотел бы иметь 2 поля ("url" и "description"), которые каким-то образом отображаются в массиве urls. Как только это сработает, я бы хотел, чтобы пользователь мог добавлять несколько URL-адресов одновременно, например, с помощью кнопки «Добавить новый URL-адрес», которая генерирует еще два из этих полей.

Я уже пытался выполнить это несколькими способами, например, вот так:

#rest of form
<% @onlinescore.url.each do |link| %>
  <% form.inputs :for => link do |urls| %>
    <%= urls.input :url, :as => :url %>
    <%= urls.input :description, :as => :string %>
  <% end %>
<% end %>
#rest of form

, который выдает ошибку:

неопределенный метод `имя_модели 'для Hash: Class

Я также попытался определить новый тип ввода: score_url, но я тоже не смог продвинуться в этом, потому что мне нужен кортеж из 2 полей, а не одного, и я пока не нашел способа сделать это. Я смотрел на формы без модели, но на самом деле я не думаю, что это то, что мне нужно ...

У кого-нибудь есть идеи, как это сделать?

1 Ответ

1 голос
/ 09 июня 2011

Основная проблема здесь (и причина 'неопределенного метода `имя_модели' для ошибки Hash: Class ') заключается в том, что каждый URL, для которого вы пытаетесь создать набор полей, представляет собой Hash, а не ActiveRecord или ActiveModel.модель.Если бы вы могли представлять эти элементы в виде массива моделей вместо массива хешей, я думаю, у вас все будет в порядке.Formtastic лучше всего работает с моделями.Rails - это фреймворк, который делает то же самое.Хэш здесь не сработает, извините, слишком много Formtastic и Rails ожидает, что сможет вызывать каждый элемент.

...