select_tag正在排序(奇怪)[Rails]

Dan*_*ark 2 html-select ruby-on-rails

我有一个看起来像这样的选择框(在form_for中)

  <%=f.select(:whatever_id, {"blah"=>0, "blah2"=>1, "blah3"=>2, "blah4"=>3}, {:include_blank => true}) %>
Run Code Online (Sandbox Code Playgroud)

输出很好,但很奇怪......像这样:

<select id="personal_information_whatever_id" name="personal_information[whatever_id]"><option value=""></option>
<option value="1">blah2</option>

<option value="2">blah3</option>
<option value="0">blah</option>
<option value="3">blah4</option></select>
Run Code Online (Sandbox Code Playgroud)

但我希望它按顺序排列......发生了什么,我该如何纠正呢?

编辑:我觉得答案与此有关

您永远无法保证任何带有哈希的订单.您可以尝试使用.sort()按字母顺序对值进行排序.

哈希有什么我可以使用的吗?

小智 9

是的,您应该使用数组数组.您的示例最简单的方法是这样的:

<%=f.select(:whatever_id, [["blah", 0], ["blah2", 1], ["blah3", 2], ["blah4", 3]], {:include_blank => true}) %>
Run Code Online (Sandbox Code Playgroud)

这应该足够了.看看api.rubyonrails.com上的文档.