Как перечислить возможные символы Enum в представлении 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>
(Очевидно, что этот фрагмент кода не делает то, что я ищу, но я надеюсь, что это делает его немного более понятным.)
1 ответ
Решение
В свойстве есть опция flags, которую вы можете использовать для поиска значений перечисления. Я не знаю, где это задокументировано - я нашел это здесь. Так что вы можете сделать что-то вроде этого:
<form>
<select>
<% Animal.type.options[:flags].each do |animal| %>
<option value="<%= animal %>"><%= animal %></option>
<% end %>
</select>
</form>
Я думаю, вы могли бы обобщить это во вспомогательный метод.