Как перечислить возможные символы Enum в представлении sinatra? - PullRequest
2 голосов
/ 04 октября 2011

Скажем, у меня есть такая модель:

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 Ответ

3 голосов
/ 04 октября 2011

В свойстве есть опция flags, которую можно использовать для поиска значений перечисления. Я не знаю, где это задокументировано - я нашел это здесь . Так что вы можете сделать что-то вроде этого:

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

Полагаю, вы могли бы обобщить это во вспомогательный метод.

...