Например, у меня есть модель product
. Каждый продукт имеет один type
по имени ProductType
. Теперь я хочу создать продукт.Рельсы: form_for с подмоделью для выбора пользователем
Вот моя простая форма использования тонкий:
= form_for @product, url: product_path, :html => {:method => post} do f
= f.label :name
= f.text_field :name
= f.submit 'Create'
Я хочу, чтобы в этой форме, есть выпадающий список, список всех видов продукции (нагрузки от ProductType
) и пользователь может выбрать один. Как я могу это сделать в рельсах (с использованием form_for
)
благодаря
спасибо так много. У меня есть еще вопрос. в моем продукте у меня есть два поля: 'type_id' и' type_name' (для предотвращения запроса 'ProductType' table). Как я могу заставить 'form_for' понимать и отправлять как' id', так и 'name' из' ProductType' в поля таблицы «Product» соответственно. (поэтому мне не нужно снова запрашивать «ProductType» для получения имени от id). спасибо –
Я рекомендую опубликовать это как отдельный вопрос, чтобы каждый мог извлечь из этого выгоду. Короче говоря, я рекомендую использовать обратный вызов 'before_save' в модели' Product' для установки 'name'. Приятно продумать отдельный пост, если вы хотите –
и еще одно. Когда я читаю в документе, они используют что-то вроде: 'collection_select (: post,: author_id, Author.all,: id,: name_with_initial, prompt: true)'. поэтому в моем случае это должно быть: 'f.collection_select: product,: type, ProductType.all,: name,: id'. Но когда я это делаю, я встречаю ошибку: 'undefined method' merge 'для: name: Symbol'. thanks –