MongoDB を使用するときにオプションをグループ化する最良の方法は何ですか?
このアプローチを試したとき、私はMongoidを使用しています:
<%= field.select :resource_id,
grouped_options_for_select(Resource.all.group_by{"resource_type_id"}.map {|k,m|
[m.first.title, m.first.id] }),:prompt => true %>
次のエラーが表示されます。
"5177e6a5359f105f89000001":Moped::BSON::ObjectId の未定義のメソッド `map'
私が探している間:
<select>
<optgroup label="RT1"> <!-- RT1 is the name of resource type -->
<option value="5177e6a5359f105f89000001">Res1</option>
</optgroup>
</select>
また、コンソールの出力Resource.all.group_by{"resource_type_id"}
は
=> {"resource_type"=>[#<Resource _id: 5177e6a5359f105f89000001,
created_at: 2013-04-24 14:05:25 UTC, updated_at: 2013-04-24 14:54:14 UTC,
title: {"en"=>"Res1"}, slug: {"en"=>"res1"}, content:
{"en"=>"This is the content for First Resource."},
excerpt: {"en"=>"This is the content for First Resource."}, published: true,
resource_type_id: "5177e3ba359f10d345000004">]}
期待される結果は
=> {"RT1"=>[#<Resource _id: 5177e6a5359f105f89000001,
created_at: 2013-04-24 14:05:25 UTC, updated_at: 2013-04-24 14:54:14 UTC,
title: {"en"=>"Res1"}, slug: {"en"=>"res1"}, content:
{"en"=>"This is the content for First Resource."},
excerpt: {"en"=>"This is the content for First Resource."}, published: true,
resource_type_id: "5177e3ba359f10d345000004">]}