选择标记,指定所选选项(或将数组元素移动到索引0)

假设我正在查询水果清单,然后将水果的ID和名称收集到@fruit中。

[32, "apple"], [8, "bannana"], [10, "cantelope"], [11, "grape"], [15, "orange"], [41, "peach"], [22, "watermelon"] 

@fruit正在Select帮助器中使用。 位于@fruit的索引0处的“apple”将是select的选定值(第一选项)。 这是一个组成的示例,但默认情况下,我总是会知道“橙色”的名称(而不是id)。 我需要“orange”作为select标签的选定值(第一个选项)。

“:prompt =>’orange’”只是在select中添加了第二个“orange”实例。 到目前为止,我在Google上发现的所有内容似乎都是为了在列表中添加额外的值或空白。

由于数组的索引0总是成为选定的值(如果在选择助手中没有使用提示或空白),有没有办法找到包含名称“orange”的索引(@fruit [x] .name == ‘orange’),并将其移至索引0,同时在列表的其余部分保留现有的alpha排序? 所以,@ fruit数组看起来像:

 @fruit[0] [15, "orange"], @fruit[1] [32, "apple"], @fruit[2] [8, "bannana"], @fruit[3] [10, "cantelope"], @fruit[4] [11, "grape"], @fruit[5] [41, "peach"], @fruit[6] [22, "watermelon"] 

我现在唯一能想到的就是遍历@fruit,如果发现“orange”,则将其添加到新数组中。 然后再次遍历@fruit数组并添加任何没有“orange”名称的内容。 我不知道如何写出来,但似乎它会做我正在寻找的东西。 也许有一些简单的方法可以做到这一点我缺少(指定数组中的哪个索引是第一个写的选项)?

谢谢!

请参见此处: http : //guides.rubyonrails.org/form_helpers.html#making-select-boxes-with-ease

如果使用现有帮助程序,则可以通过id指定要选择的选项。 特别是这个例子:

 <%= options_for_select([['Lisbon', 1], ['Madrid', 2]], 2) %> output:   

你说你不知道ID是哪个选项是“橙色”。 如果你想在fruit数组中找到“orange”的ID,那么你可以使用帮助器:

 (@fruit.detect { |i| i[1] == 'orange' } || []).first 

您可以在select标记中使用options_from_collection_for_select来选择默认选项。 例如:

 <%= select_tag 'state', options_from_collection_for_select(@fruits, 'id', 'name', 15), :include_blank => true %> 

这将默认选择“橙色”。 API文档 。