我在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
。任何帮助将不胜感激!
答案 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)......
希望这能让你走上正确的道路。