0

RailsとDeviseの宝石を使用しています。PayPalアカウントが欲しいのですが。

私には機能があります:

  def verify_paypal
............
   end

user.rbに入れました。ルートをroutes.rbに追加しました:

devise_for :users do
  member do
  get 'verify_paypal'
  end
end

エラーが発生します

  /mapper.rb:1189:in `member': can't use member outside resource(s) scope (ArgumentError)

私が間違っているのは何ですか?

4

1 に答える 1

1

まず、ブロックを呼び出すことはできませんdevise_for。このように設定されていません。Deviseには、Deviseルートでブロックを呼び出すことができるヘルパーメソッドが用意されています。READMEを参照してください。

次に、DeviseルートとスコープDeviseルートは、Deviseルート専用です。メソッドはどのDeviseコントローラーにも含まれていないため、Deviseに対して呼び出すことはできません。モデルusers_controller.rbを呼び出すためのメソッドとは別のものが必要です。verify_paypal次に、のブロック呼び出しでカスタムルートを設定できますresources users。Railsルーティングスタックの詳細については、Rails Routing From theOutsideInを読むことをお勧めします。これにより、カスタムアクションを呼び出すために必要なすべての情報が得られます。

于 2012-07-15T01:30:20.597 に答える