Я пытаюсь создать свое приложение, используя вложенный набор Gem здесь Я пытаюсь создать простое меню продукта для своего приложения, поэтому у меня будет что-то вроде
+ Категория--Category----Товар----Товар--Category----Товар----Товар
Моя проблема с вложенным самоцветом Set в том, что я не хочу, чтобы глубина два превышала глубину двух категорий.Вложенный набор gem по умолчанию допускает что-то вроде этого
+ Категория--Category--- Категория---- Категория-----Товар
Но для наших стилей CSS мы не хотим иметь дело с такой большой глубиной, и клиенту не нужна такая большая глубина.
Так что мне интересно,Во-первых, мне даже нужен вложенный набор, или в этом сценарии будет работать стандарт has_many Proper_?Я использую Nested Set из ответов на этот вопрос здесь .
Я лично считаю, что я могу просто использовать стандартный has_many и принадлежит, если кто-то не может сообщить мне преимуществоиспользовать Nested Set в моем случае.Если мне это нужно, как я могу ограничить выбор пользователем только правильной глубины для добавления узла?
РЕДАКТИРОВАТЬ: Решено, Спасибо.Моя новая проблема: я получаю сообщение об ошибке
неопределенный метод `self_and_descendants 'для []: ActiveRecord :: Relation Извлеченный источник (вокруг строки № 9):
6: </p>
7: <p>
8: <%= f.label(:parent_id) %>
9: <%= f.select :parent_id, nested_set_options(Category.categories, @category) {|i, level| "#{'-' * level} #{i.name}" } %>
10: </p>
11: <p>
12: <% # f.label(:position) %>
просмотров / категорий / _form.html.erb
<%= form_for(@category) do |f| %>
<p>
<%= f.label(:name) %>
<%= f.text_field :name %>
</p>
<p>
<%= f.label(:parent_id) %>
<%= f.select :parent_id, nested_set_options(Category.categories, @category) {|i, level| "#{'-' * level} #{i.name}" } %>
</p>
<p>
<% # f.label(:position) %>
<% # f.select :position, 1..category_count %>
</p>
<p>
<%= f.submit("Submit") %>
</p>
<% end %>
моделей / категорий.rb
class Category < ActiveRecord::Base
acts_as_nested_set
acts_as_list :scope => :parent_id
has_many :products
scope :position, order("position asc")
scope :categories, where("parent_id IS NULL")
scope :subcategories, where("parent_id IS NOT NULL")
end
маршруты.rb (укорочено для космоса)
Locksmithing::Application.routes.draw do
resources :categories do
collection { post :sort }
resources :children, :controller => :categories, :only => [:index, :new, :create, :new_subcategory]
end
end