Min*_*ohn 0 migration ruby-on-rails categories ruby-on-rails-3 ruby-on-rails-4
我有很多主要类别,并希望添加到每个子类别.->
主要类别
- 子类别
- 子类别
- 子类别
主要类别
- 子类别
- 子类别
- 子类别
很多人建议我使用宝石,但由于我对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
Run Code Online (Sandbox Code Playgroud)
并编辑 app/models/category.rb
class Category < ActiveRecord::Base
belongs_to :category
has_many :children, :dependent => :destroy, :class_name => 'Category'
end
Run Code Online (Sandbox Code Playgroud)
您必须执行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
Run Code Online (Sandbox Code Playgroud)
以及您的类别的表单:
<%= 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 %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2131 次 |
| 最近记录: |