1

http://ariejan.net/2011/10/14/rails-3-customized-exception-handling/の指示に従っていますが、障害にぶつかっています。

私はレールに比較的慣れていないので、何が正しい/正しくないかわかりません。

最初のステップはクラスを作成することでした

MyApp::ProfileNotFoundError < StandardError
end

そこで私は app/models に行き、以下を含む profile_not_found.rb を作成しました。ここで、(APP) は Rails.application.class.parent_name で定義された私のアプリの名前ですが、セキュリティ/プライバシーのためにこの投稿から隠しています。

(APP)::ProfileNotFoundError < StandardError
end

app/controllers/application_controller.rb に追加しました

rescue_from (APP)::ProfileNotFoundError, :with => :profile_not_found

ログインコントローラーに追加しました

raise (APP)::ProfileNotFoundError if @profile.nil?

ただし、コードをテストしようとすると、Routing Error が表示されます。

uninitialized constant (APP)::BlankUsernameError

私の意見では、これはクラスの作成に関して何か間違ったことをしたことを示唆していますが、チュートリアルは非常に曖昧で、私には理解できません。ポインタはありますか?

Rails 3.0.20 と Ruby 1.8.7 を Ubuntu 12.04.2 x86_64 で実行しています

4

1 に答える 1

6

クラス定義にclassキーワードがありますか?

class MyApp::ProfileNotFoundError < StandardError
end

次に、使用している場所に移動する必要がありrequireますexceptionsuninitialized constantこれはおそらく、エラーで発生している問題です。これを行うには、おそらくモジュールでラップする必要があります。

module Exceptions
  class MyApp::ProfileNotFoundError < StandardError
  end
end

また、エラー クラスは とは別のディレクトリに配置する必要があります/models。このディレクトリは、モデルに対して明示的に指定する必要があります。のようなものを作るかもしれません/errors

于 2013-07-08T15:45:24.397 に答える