我有一个公司模型,一个公司可以有很多地方,所以我设置了这样的路线:
resources :companies do
resources :locations
end
我希望能够在路线companies/:company_id/locations/new
向公司添加新位置,但是如果我去的公司不存在,这个页面仍可访问,如{{1} }。
如果公司ID存在,我该如何才能访问此页面?
答案 0 :(得分:2)
您可以将before_filter添加到您的位置控制器(无论如何,您都需要检索母公司的嵌套表单和链接):
class LocationsController < ApplicationController
before_filter :get_company
def get_company
@company = Company.find(params[:company_id])
end
end
这样,在错误的公司ID下导航到位置路由将产生典型的id not found异常,如果它不是嵌套资源,通常会看到该异常。通常,您将在应用程序控制器中处理此异常并重定向到404页面。
答案 1 :(得分:0)
不确定您是否需要在routes.rb本身中定义某些内容,但我只是在控制器的操作中验证公司是否存在(并呈现404,如果这是您想要的,如{{3}中所述})