[英]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
開始的,而且它可能沒有順序。 我可以在這個二維數組上寫一個搜索,但有沒有更簡單的方法? 有誰知道解決這個問題的最簡單方法?
在這種情況下,您可以選擇從數據庫值到顯示值的直接映射,並且您始終希望使用顯示值進行演示,我使用這種方法:
在您的模型中,聲明一個具有映射關系的數組:
class Person
GENDER = [
["Male", "m"],
["Female", "f"]
]
end
在您的編輯視圖(表單)中,您可以使用以下方法創建選擇:
<%= f.select :gender, Person::GENDER %>
在顯示視圖中,您可以使用以下格式顯示:
<%= Person::GENDER.find {|item| item[1] == @person.gender }[0] %>
這種方法使您能夠控制選擇中項目的顯示順序,並且仍然能夠相當容易地呈現顯示值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.