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 %>