Как сделать сгруппированный блок выбора, сгруппированный по столбцу для данной модели в Formtastic for Rails? - PullRequest
0 голосов
/ 07 апреля 2010

В моем проекте Rails я использую Formtastic для управления моими формами. У меня есть модель, теги, с колонкой «группа». Столбец группы - это простой способ упорядочить мои теги. Я опубликую свой класс модели Tag, чтобы вы могли видеть, как он организован

class Tag < ActiveRecord::Base
  class Group
    BRAND     = 1
    SEASON    = 2
    OCCASION  = 3
    CONDITION = 4
    SUBCATEGORY = 5
  end

  has_many :taggings, :dependent => :destroy
  has_many :plaggs, :through => :taggings
  has_many :monitorings, :as => :monitorizable

  validates_presence_of :name, :group
  validates_uniqueness_of :name, :case_sensitive => false

  def self.brands(options = {})
    self.all({ :conditions => { :group => Group::BRAND } }.merge(options))
  end

  def self.seasons(options = {})
    self.all({ :conditions => { :group => Group::SEASON } }.merge(options))
  end

  def self.occasions(options = {})
    self.all({ :conditions => { :group => Group::OCCASION } }.merge(options))
  end

  def self.conditions(options = {})
    self.all({ :conditions => { :group => Group::CONDITION } }.merge(options))
  end

  def self.subcategories(options = {})
    self.all({ :conditions => { :group => Group::SUBCATEGORY } }.merge(options))
  end

  def self.non_brands(options = {})
    self.all({ :conditions => [ "`group` != ? AND `group` != ?", Tag::Group::SUBCATEGORY, Tag::Group::BRAND] }.merge(options))
  end
end

Моя цель - использовать Formtastic для предоставления сгруппированного поля множественного выбора, сгруппированного по столбцу «group» с тегами, которые возвращаются методом non_brands. Я пробовал следующее:

= f.input :tags, :required => false, :as => :select, :input_html => { :multiple => true }, :collection => tags, :selected => sel_tags, :group_by => :group, :prompt => false

Но я получаю следующую ошибку:

(неопределенный метод `klass 'для ноль: NilClass)

Есть идеи, где я иду не так?

Спасибо за внимание:]

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

Я не уверен, что мы поддерживаем: group_by с custom: collection. На самом деле тот, кто часть кода, был грязным вкладом. Итак, попробуйте для начала опустить коллекцию: и посмотрите, где вы оказались. Если есть ошибка с Formtastic, пожалуйста, добавьте проблему на Github.

0 голосов
/ 07 апреля 2010

Я бы сначала переместил ваш класс Group из этого файла и просто унаследовал от того, где вы хотите, или использовал бы Модуль в этом классе. Это предпочтительный способ получения методов-констант в классе и обеспечения их организованности.

...