2011-10-04 47 views
2

說我有一個模型,如下所示:如何在Sinatra視圖中列出可能的枚舉符號?

class Animal 
    include DataMapper::Resource 
    property :id, Serial 
    property :type, Enum[ :cat, :bat, :rabbit, :zebra] 
end 

假設有一個路徑指向ERB模板添加更多的動物& @animal = session[:animal]我怎麼會創造的動物類型的列表?

... 
<form> 
    <% @animal.type.each do |animal| %> 
    <select> 
     <option value="<%= @animal.type" %></option> 
    </select> 
    <% end %> 
</form> 

(顯然的代碼位沒有做什麼我期待的,但我希望這使得它更有點清楚。)

回答

3

有對物業的標誌選項時可以用來查找枚舉值。我不知道這是記錄在哪裏 - 我發現它here。所以你可以做這樣的事情:

<form> 
    <select> 
    <% Animal.type.options[:flags].each do |animal| %> 
     <option value="<%= animal %>"><%= animal %></option> 
    <% end %> 
    </select> 
</form> 

我想你可以概括爲輔助方法。

+0

哦,那是美麗的男人! _Exactly_我​​在找什麼。奇怪的是,這不是更好的文件0o。我不太明白如何將它變成輔助方法,儘管... –

+0

如果它有助於保持您的視圖清潔和簡單,可能需要將其變爲輔助方法,特別是如果您要在不止一個地方。 Sinatra沒有像rails一樣的內置視圖助手,但它們很容易編寫,例如, http://www.sinatrarb.com/faq.html#helpview – Steve