Как определить значения выбора формы через модель в 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, так что вы будете иметь все категории.

Другие вопросы по тегам