0

一家公司有很多资产。一处房产拥有一家公司。

在我的路线文件中,我得到:

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/路由的上下文中是已知的?

4

1 回答 1

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
于 2013-05-06T06:35:50.867 回答