在Rails4中添加子类别

我有很多主要类别,并希望添加到每个子类别.->

主要类别
– 子类别
– 子类别
– 子类别

主要类别
– 子类别
– 子类别
– 子类别

很多人建议我使用gem,但由于我对Rails相当新,我宁愿自己学习如何做到这一点,也要学习他们所有的方法。

我应该从Scaffold还是仅仅是Model

有人可以解释我如何开始(迁移等)以及如何设置它?

谢谢。

您必须使用rails g model category生成新模型,然后在db/migrate编辑生成文件并编写此文件

 class CreateCategories < ActiveRecord::Migration def change create_table :categories do |t| t.belongs_to :category t.string :name, :null => false t.timestamps end end end 

并编辑app/models/category.rb

 class Category < ActiveRecord::Base belongs_to :category has_many :children, :dependent => :destroy, :class_name => 'Category' end 

并且您必须执行rake db:migrate以在数据库中创建表。

编辑:

在app / controllers / categories_controller.rb中

 class CategoriesController < ApplicationController def index @categories = Category.all end def new @category = Category.new end def edit @category = Category.find(params[:id]) end def create @category = Category.new(params[:category].permit!) if @category.save redirect_to categories_url else render :new end end def update @category = Category.find(params[:id]) if @category.update_attributes(params[:category].permit!) redirect_to categories_url else render :edit end end def destroy Category.destroy(params[:id]) redirect_to categories_url end end 

以及您的类别的表单:

 <%= form_for @category do |f| %> <%= f.text_field :name %> <%= f.select :category_id, options_from_collection_for_select(Category.all, :id, :name, @category.category_id), :include_blank => true %> <%= f.submit %> <% end %>