How do I make a grouped select box grouped by a column for a given model in Formtastic for Rails?

Posted by jklina on Stack Overflow See other posts from Stack Overflow or by jklina
Published on 2010-04-06T20:21:38Z Indexed on 2010/04/06 20:23 UTC
Read the original article Hit count: 307

In my Rails project I'm using Formtastic to manage my forms. I have a model, Tags, with a column, "group". The group column is just a simple hardcoded way to organize my tags. I will post my Tag model class so you can see how it's organized

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

My goal is to use Formtastic to provide a grouped multiselect box, grouped by the column, "group" with the tags that are returned from the non_brands method. I have tried the following:

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

But I receive the following error:

(undefined method `klass' for nil:NilClass)

Any ideas where I'm going wrong?

Thanks for looking :]

© Stack Overflow or respective owner

Related posts about ruby-on-rails

Related posts about formtastic