ruby on rails:如何限制嵌套路由?

时间:2013-01-24 19:52:44

标签: ruby-on-rails ruby-on-rails-3 routing

我有一个公司模型,一个公司可以有很多地方,所以我设置了这样的路线:

resources :companies do
  resources :locations
end

我希望能够在路线companies/:company_id/locations/new向公司添加新位置,但是如果我去的公司不存在,这个页面仍可访问,如{{1} }。

如果公司ID存在,我该如何才能访问此页面?

2 个答案:

答案 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}中所述})

相关问题