как создать выпадающий список из хэша в rails 3 - PullRequest
3 голосов
/ 12 июля 2011

В рельсах 3, как создать выпадающий список из хеша

В моем классе пользователя есть следующий код

class User
  ...   other codes
  key :gender, Integer    # i use mongo db

  class << self
    def genders()
      genders = {
        '1' => 'Male',
        '2' => 'Female',
        '3' => 'Secret'
      }
    end
  end

end

В пользовательской форме я пытаюсь создать раскрывающийся список по полу

<%= f.collection_select nil, :gender, User.genders, :key, :value %>

но жалуются

undefined method `merge' for :value:Symbol

Итак, как правильно создать раскрывающийся список?

Спасибо

1 Ответ

7 голосов
/ 12 июля 2011

Это должно работать:

<%= f.collection_select :gender, User.genders, :first, :last %>

Редактировать : Пояснения:

collection_select вызовет each для объекта, который вы дадите (User.genders здесь) и два метода (first и last здесь) для каждого объект. Это примерно эквивалентно примерно так:

User.genders.each do |object|
  output << "<option value=#{object.first.inspect}>#{h object.last}</option>"
end

Когда вы вызываете each для хэша , он выдает Array двух значений (ключ и значение). Эти значения можно получить с помощью методов first и last.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...