find_all_by в <select>таблице для определенного поля в базе данных - PullRequest
1 голос
/ 19 октября 2010

У меня есть функция, в которой я хочу показать соответствующее значение в форме выбора на основе функции ниже:

 def index
    @initval = Haus.find_all_by_haus_id(1)
  end

Он вернет список значений, имеющих haus_id = "1" (например, я получу a, b, c)

в index.rhtml, я хочу показать список, соответствующий haus_id = "1", но показывающий только их время сборки (так, например, я получу время "a" было построено, "b" было построено, и " с "был построен).

<select id="subtable" name="subtable" size="7" style="width: 150px">
    <option selected value="<%= @initval.id %>"><%= @initval.timebuild%></option>
</select>

Тем не менее, он возвращает

undefined method `timebuild' for #<Array:0x4b5c238>

Если в форме выбора я изменю @ initval.timebuild на @ initival.id, он вернет число (я не уверен, откуда оно). Как я могу показать список timebuild от haus, который имеет haus_id = "1" в форме выбора?

Пожалуйста, помогите.

1 Ответ

1 голос
/ 19 октября 2010

Если вы используете find_all_by_haus_id, результатом будет массив всех соответствующих Haus объектов.Даже если есть только одна совпадающая запись, это все равно будет массив с 1 элементом.

Каждый объект в Ruby имеет метод id, который возвращает внутренний идентификатор объекта (хотя это имя метода в настоящее время не рекомендуется в пользуиз object_id.) Это число, которое вы видите при вызове id в вашем массиве, например:

irb(main):002:0> [1, 2, 3].id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 23959200

Если вы просто хотите вернуть одну запись, вы можете использовать Haus.find_by_haus_id.

Если вы хотите получить несколько значений, используйте find_all_by_haus_id и используйте что-то вроде options_from_collection_for_select , чтобы создать тег options для каждой записи.

Наконец, если haus_idявляется первичным ключом в вашей таблице, тогда вы можете просто использовать find, чтобы вернуть соответствующий объект, например,

@initval = Haus.find(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...