0

Моего приложения имеет категории и подкатегории, добавить категории я печатаю db/seeds.rb этот код category = Category.create!(name: "Video and animation") #it works иДобавить еще в seeds.rb в Rails 4

для подкатегории я тип subcategory = Subcategory.create!(name: "Intro", "Animation & 3D", "Editing and Post Production", "Other") #it doesn't work

, а затем присвоить подкатегорию категории i в конце category.subcategories << subcategory

Проблема возникает, когда я создаю a подкатегория с другими именами, как в коде выше, что я делаю неправильно? Спасибо.

+0

В чем проблема? – bsvin33t

+0

Когда я создаю подкатегорию с приведенным выше кодом, она дает ошибку. –

+0

Какое сообщение об ошибке вы видите? – bsvin33t

ответ

1

Вот решение:

@category = Category.create!(name: "Video and animation")

["Intro", "Animation & 3D", "Editing and Post Production", "Other"].each do |name|

@subcategory = Subcategory.create!(name: name, category_id: @category.id)

end

+0

Работает очень хорошо, как бы вы показали подкатегории в взгляды. Любой совет? Спасибо!. –

+0

Я попробовал '<% Subcategory.all.each do | подкатегорию | %> <% = link_to subcategory.name, gigs_path (подкатегория: подкатегория.имя)%> <% end %> ', но он отображает все продукты из всех подкатегорий, когда мне нужно показывать продукты только из одной определенной подкатегории. –

+0

использовать <% (Subcategory.where (: name => '' Intro ")). Each do | subcategory |%> –

2

Если у вас есть отношение subcategory belongs_to category с подкатегорию таблицы, включая category_id поле:

category = Category.create!(name: "Video and animation") 
["Intro", "Animation & 3D", "Editing and Post Production", "Other"].each do |name| 
    subcategory = Subcategory.create!(name: name, category: category) 
end 
+1

Нет необходимости назначать 'подкатегорию' внутри цикла, так как она не будет доступна за пределами ее области так или иначе. (Даже если бы это было так, он содержал бы только последнюю «подкатегорию».) Если ему нужны подкатегории позже, ему лучше делать: 'subcategories = [...]. Map {| name | Subcategory.create! (Имя: имя, категория: категория)} '. – Drenmi

+0

** Uday kumar das ** ответ работал очень хорошо для меня, но как бы вы показали подкатегории в views.i try '<% Subcategory.all.each do | подкатегория | %><% = link_to subcategory.name, gigs_path (подкатегория: подкатегория.имя)%><% end %> ', и при необходимости она отображает все мои 4 подкатегории, но когда я нажимаю на одну из них, например, на« Анимация и 3D », он показывает другие продукты из других подкатегорий. –

+0

Вам нужно отредактировать свой метод 'gigs_controller # index'. Трудно сказать, не видя кода, но у вас должно быть что-то вроде строк подкатегории = Подкатегория.find_by (имя: params [: subcategory]); @products = subcategory.products'. В представлении вы должны использовать '@ products.each' вместо' Product.all.each' – makhan

Смежные вопросы