0
我是一个litte卡住不幸,也许有人可以帮忙吗?谢谢!Rails - STI - 嵌套的资源 - belongs_to coulmn
我有3类用户,经理和驱动程序。经理和驱动程序是 用户的子类。司机与经理belongs_to的关系:我用STI
class User < ActiveRecord::Base
attr_accessible :email, :name
end
class Manager < User
has_many :drivers
end
class Driver < User
belongs_to :manager
end
:加入
ActiveRecord::Schema.define(:version => 20140104122558) do
create_table "users", :force => true do |t|
t.string "name"
t.string "email"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "type"
t.integer "manager_id"
end
add_index "users", ["manager_id"], :name => "index_users_on_manager_id"
end
经理标识来店经理,当此列中的经理-id,创建一个新的驱动程序参考应该存储哪个唉不起作用。 “manager_id”列保持空白。也许有人知道如何自动保存关联?
路线:
resources :managers do
resources :drivers
end
class ManagersController < ApplicationController
def index
@managers = Manager.all
end
def show
@manager = Manager.find(params[:id])
end
def new
@manager = Manager.new
end
def edit
@manager = Manager.find(params[:id])
end
def create
@manager = Manager.new(params[:manager])
if @manager.save
# Handle a successful save.
render 'new'
else
render 'new'
end
end
def update
@manager = Manager.find(params[:id])
end
def destroy
@manager = Manager.find(params[:id])
@manager.destroy
end
end
class DriversController < ApplicationController
def index
@drivers = Driver.all
end
def show
@driver = Driver.find(params[:id])
end
def new
@driver = Driver.new
@manager = Manager.find_by_id(params[:manager_id])
end
def edit
@driver = Driver.find(params[:id])
end
def create
@driver = Driver.new(params[:driver])
@manager = Manager.find_by_id(params[:manager_id])
if @driver.save
# Handle a successful save.
render 'new'
else
render 'new'
end
end
def update
@driver = Driver.find(params[:id])
end
def destroy
@driver = Driver.find(params[:id])
@driver.destroy
end
end
在创建行动不应则params的[ID]代替PARAMS [MANAGER_ID]可以用吗?
<h1>New driver</h1>
<%= form_for [@manager,@driver] do |f| %>
<%= f.label :name %>
<%= f.text_field :name %><br />
<%= f.label :email %>
<%= f.text_field :email %><br />
<%= f.submit "Create new driver" %>
<% end %>