3

我在 simple_form github repo 上遇到了以下内容:

f.input :country_id, :collection => @continents, :as => :grouped_select, :group_method =>   :countries

引起我注意的是,:group_method在创建一个根据数据库中的内容提供选项的选择框时,这将非常有用。我唯一无法解决的是:group_method期望什么样的输入,以及将方法放在哪里。

例如,我想为表格 column 创建一个选择框:product_type。我想我会用我的简单形式写这样的东西:

= f.input :product_type_contains, :collection => @products, :as => :grouped_select, :group_method => :product_types

:product_type被调用的方法在哪里。但是我不知道我应该写什么样的方法,simple_form期望什么样的结果,如果我应该把它放在Product类中,Product.rb. 任何帮助将不胜感激!

4

1 回答 1

2

根据测试套件simple_form似乎期望您将与 grouped_options_for_select 一起使用的数组或散列类型:

test 'grouped collection accepts group_label_method option' do
  with_input_for @user, :tag_ids, :grouped_select,
    :collection => { ['Jose', 'Carlos'] => 'Authors' },
  :group_method => :first,
  :group_label_method => :last
  [...]

test 'grouped collection accepts label and value methods options' do
  with_input_for @user, :tag_ids, :grouped_select,
    :collection => { 'Authors' => ['Jose', 'Carlos'] },
    :group_method => :last,
    :label_method => :upcase,
    :value_method => :downcase
  [...]

据推测,您可以编写一个Product.rb创建类似结构的类方法,甚至尝试使用 grouped_options_for_select(@products)...

希望这能让你走上正确的道路。

于 2012-09-11T18:33:39.737 回答