Как определить значения выбора формы через модель в Rails?
Я создал простую модель под названием Категории, которая связана с моделью платформ.
class Platform < ActiveRecord::Base
attr_accessible :name, :url, :country, :categories
belongs_to :category
end
а также
class Category < ActiveRecord::Base
attr_accessible :name
has_many :platforms
end
У меня также успешно есть форма для создания новых платформ:
<%= simple_form_for(@platform) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :name %>
<%= f.input :url %>
<%= f.input :country %>
<%= f.label :category %>
<%= f.collection_select(:category_id, @categories, :id, :name, :include_blank => "Please select") %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
К сожалению, поскольку модель категории является новой, в раскрывающемся списке в настоящее время имеется только 1 значение "Пожалуйста, выбрано" Как добавить новые значения в этот выбор, предпочтительно через модель?
2 ответа
Обратите внимание, что с simple_form вы можете автоматически создать раскрывающийся список, используя
<%= f.association :category %>
Это автоматически заполнит список категориями из базы данных. Смотрите документацию для получения дополнительных советов.
РЕДАКТИРОВАТЬ: категории просто должны быть добавлены отдельно. Вы можете вручную заполнить свою базу данных категориями с помощью сценария db/seed.rb или через консоль rails. Или вы можете позволить пользователям добавлять категории через отдельную форму и контроллер.
Например, чтобы создать несколько категорий в консоли, запустите rails c
из командной строки и запустить Category.create!(name: "Name")
на несколько имен.
В вашем new
действие PlatformsController, добавить @categories = Category.all
, так что вы будете иметь все категории.