公司有很多房产。物业有一家公司。
在我的路线文件中,我得到了:
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 :(得分: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