Rails плохой массив - PullRequest
       14

Rails плохой массив

1 голос
/ 08 ноября 2011

Я сгенерировал атрибут массива, используя

rails gen ... AddTaglistToPictures taglist:array

В моей функции создания в моем контроллере Pictures в if @ picture.save у меня есть

tagList =[]
tags = @picture.tags
tags.each do |tag|
  tagList += [tag.tagcontent]
end
@picture.taglist = tagList
@picture.save

В приведенном выше примере яиметь тег в качестве модели, построенный с использованием nested_form gem (мне нужна модель, а также список)

Когда я создаю группу тегов, я получаю такой список

"---\n- table\n- kevin\n- table\n- kevin\n"

являются правильными тегами, но они не очень полезны (потому что попытка извлечь элементы похожа на tag [0], это '-', tag [4] на 'n'.) Как мне сделать этот атрибут, чтобы он форматировал массивправильно

Ответы [ 3 ]

3 голосов
/ 08 ноября 2011

Если вы хотите сохранить массив в столбце, вам нужно использовать ключевое слово serialize

class Photo
   serialize :tags, Array
end

затем добавьте столбец тегов в класс Photo типа string (или text, если их будет много)

1 голос
/ 08 ноября 2011

Честно говоря, вы сказали ему использовать массив, так что он собирается сериализовать фактический массив.

IMO, это должно быть нормальное сопоставление:

class Photo
    has_many :tags
end

Или вы могли быпросто используйте acts_as_taggable_on_steroids или любой из плагинов тегирования.

1 голос
/ 08 ноября 2011

"---\n- table\n- kevin\n- table\n- kevin\n" - это сериализованный массив yaml.

Попробуйте загрузить его с YAML.load("---\n- table\n- kevin\n- table\n- kevin\n").Это должно дать вам правильный массив ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...