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でロケーションルートに移動すると、ネストされたリソースでない場合に通常表示される、通常のidnotfound例外が生成されます。通常、アプリケーションコントローラでこの例外を処理し、404ページにリダイレクトします。

于 2013-01-24T20:01:26.207 に答える
0

routes.rb 自体で定義したものが必要かどうかはわかりませんが、コントローラーのアクションで会社の存在を検証するだけです ( 404 にリダイレクトする方法で説明されているように、それが必要な場合は 404 をレンダリングします)。レール?

于 2013-01-24T20:03:03.323 に答える