Я создаю веб-сайт, который представляет собой небольшую систему управления контентом. (в том смысле, что пользователь сможет динамически изменять большую часть контента сайта)
В моем приложении rails у меня есть две модели: категория и подкатегория. Категория имеет много подкатегорий, и подкатегория принадлежит категории.
Каждая подкатегория имеет поле позиции, которое определяет, где оно отображается под категорией.
При создании подкатегории по форме я хочу, чтобы у пользователя была возможность выбрать категорию из списка всех категорий в базе данных (что у меня нормально работает). Затем я хочу обновить поле позиции (раскрывающийся список) в зависимости от того, какие позиции в настоящее время доступны в этой категории.
Моя текущая идея отслеживать доступную позицию для подкатегории в моем контроллере приложений:
def subcategory_count(subcategory)
category = subcategory.category
@count = category.subcategories.count
end
Затем я добавляю +1 к @count
, чтобы получить доступные позиции +1. (Если у кого-то есть лучший способ сделать это, пожалуйста, дайте мне знать.)
В настоящее время я слежу за пересмотренными рейкастами Райана Бейтса 88, которые являются динамическим выбором меню. Вот как выглядит моя форма прямо сейчас.
<%= form_for(@subcategory) do |f| %>
<p>
<%= f.label(:name) %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label(:category_id) %>
<%= f.collection_select :category_id, Category.order(:position), :id, :name, include_blank: true %>
</p>
<p>
<%= f.label :position, "Position" %>
<%= f.grouped_collection_select :position, Category.order(:position), :subcategories, :name, :position, :position%>
</p>
<p>
<%= f.submit("Submit") %>
</p>
<% end %>
Проблема с этим кодом заключается в том, что мне нужно, чтобы он отображался как int, чтобы я мог добавить +1 к нему, в противном случае, когда в базе данных нет подкатегорий, он просто отображается пустым и не позволяет мне выбрать " 1 "позиция.
Итак, мне нужно найти способ обновить поле, чтобы показать доступные позиции в категории, но я не знаю, как именно это сделать. Любая помощь будет принята с благодарностью.