关注RailsGuides,我正在创建一个下拉形式的下拉列表:
[['Lisbon', 1], ['Madrid', 2], ...]
生成一个下拉列表,如:
<option value="1">Lisbon</option>
<option value="2">Madrid</option>
在我的展示页面上,我想显示存储值的文本(Madrid
)而不是整数(2
)。
该值存储在数据库中。这是一个实时系统,这意味着我无法更改存储的内容(我可以,但不愿意)。
我更喜欢从哈希构建下拉列表,但由于这是RailsGuide中建议的格式,我假设有一个内置帮助程序可以执行此操作。如果我将下拉列表存储为字符串会更容易,尽管它会占用数据库中的大量空格。
我无法使用索引,因为值不是从0
开始的,而且可能不是有序的。我可以在这个二维数组上写一个搜索,但是有更简单的方法吗?有谁知道解决这个问题的最简单方法?
答案 0 :(得分:1)
在这种情况下,如果您选择了从数据库值到显示值的直接映射,并且您一直想使用显示值进行演示,我会使用以下方法:
在模型中,声明一个具有映射关系的数组:
class Person
GENDER = [
["Male", "m"],
["Female", "f"]
]
end
在编辑视图(表单)中,您可以使用以下方法创建选择:
<%= f.select :gender, Person::GENDER %>
在节目视图中,您可以使用以下格式显示:
<%= Person::GENDER.find {|item| item[1] == @person.gender }[0] %>
此方法使您能够控制选择中项目的显示顺序,并且仍然能够合理地轻松呈现显示值。