簡體   English   中英

從存儲為整數的下拉表單中顯示文本值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM