0

我有一个公司模型,一个公司可以有很多位置,所以我的路线设置如下:

resources :companies do
  resources :locations
end

我希望能够在路线上为公司添加一个新位置companies/:company_id/locations/new,但是如果我去一家不存在的公司,这个页面仍然可以访问,就像这样companies/99999999/locations/new

如何使该页面仅在公司 ID 存在时才可访问?

4

2 回答 2

2

您可以将 before_filter 添加到您的位置控制器(无论如何,您都需要检索母公司以获取嵌套表单和链接):

class LocationsController < ApplicationController

  before_filter :get_company    

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

end

这样,在错误的公司 ID 下导航到 Location 路由将产生典型的 id not found 异常,如果它不是嵌套资源,您通常会看到该异常。通常,您会在应用程序控制器中处理此异常并重定向到 404 页面。

于 2013-01-24T20:01:26.207 回答
0

不确定您是否想要在 routes.rb 本身中定义某些内容,但我只是在控制器的操作中验证公司的存在(并呈现 404,如果这是您想要的,如如何重定向到 404 中所述铁轨?

于 2013-01-24T20:03:03.323 回答