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