【问题标题】:How do I make a grouped select box grouped by a column for a given model in Formtastic for Rails?如何在 Formtastic for Rails 中为给定模型创建按列分组的分组选择框?
【发布时间】:2010-04-06 20:21:38
【问题描述】:

在我的 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 提供一个分组多选框,按列分组,“分组”带有从 non_brands 方法返回的标签。我尝试了以下方法:

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

但我收到以下错误:

(未定义的方法 `klass' for nil:NilClass)

任何想法我哪里出错了?

感谢观看:]

【问题讨论】:

    标签: ruby-on-rails grouping formtastic drop-down-menu


    【解决方案1】:

    我不确定我们是否支持 :group_by 和自定义 :collection。事实上,那部分代码是一个乱七八糟的贡献。因此,请尝试省略 :collection 作为初学者,并查看最终结果。如果 Formtastic 有问题,请在 Github 上添加问题。

    【讨论】:

      【解决方案2】:

      我首先将您的Group 类移出该文件,然后从您想要的位置继承,或者在该类中使用模块。这是将方法和常量放入类并保持井井有条的首选方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        • 2019-11-11
        相关资源
        最近更新 更多