2013-05-06 62 views
0

公司有许多属性。一个物业有一家公司。Rails:嵌套资源并指定“nester”

在我的路线文件我:

resources :companies do 
    resources :property_managers 
end 

在property_manager_controller,我create动作看起来像这样(默认支架实现小幅修改,以适应公司):

def create 
@property_manager = PropertyManager.new(params[:property_manager]) 
@property_manager.company_id = params[:company_id] 

respond_to do |format| 
    if @property_manager.save 
    format.html { redirect_to company_property_managers_path, notice: 'Property manager was successfully created.' } 
    format.json { render json: @property_manager, status: :created, location: @property_manager } 
    else 
    format.html { render action: "new" } 
    format.json { render json: @property_manager.errors, status: :unprocessable_entity } 
    end 
end 

有没有一种方法可以让我无需显式设置company_id,因为它在URL /路由的上下文中是已知的?

回答

0

我想你可以做这样的事情下面,不知道这是否是好是坏:

class PropertyManagersController < ApplicationController 
    before_filter :find_company 

    def new 
    @property_manager = @company.property_managers.build 
    end 

    def create 
    @property_manager = @company.property_managers.build(params[:property_manager]) 
    respond_to do |format| 
     ... 
    end 
    end 

    private 

    def find_company 
    @company ||= Company.find(params[:company_id]) 
    end 

end