Rails Simple-Form group_method

时间:2012-08-15 09:40:37

标签: ruby-on-rails simple-form

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

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

引起我注意的是:group_method在创建一个根据数据库中的内容提供选项的选择框时非常有用。我唯一无法解决的是:group_method期望的输入类型以及放置方法的位置。

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

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

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

1 个答案:

答案 0 :(得分:1)

根据test suite 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)......

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