路径错误:无法为User调用自定义功能

时间:2012-07-14 18:26:27

标签: ruby-on-rails devise routes

我正在使用Rails和Devise gem。我想要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)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

首先,你不能在devise_for上调用一个块,它不是这样设置的。 Devise确实提供了一个可以使用的辅助方法,允许您在Devise路由上调用一个块。请参阅README

其次,设计路线和范围设计路线,仅适用于Devise路线。您的方法不在任何Devise控制器中,因此不能为Devise调用它。您需要使用单独的users_controller.rb方法在模型上调用verify_paypal。然后,您可以在resources users上的阻止调用中设置自定义路由。有关Rails路由堆栈的更多信息,我建议您阅读Rails Routing From the Outside In。这应该为您提供调用自定义操作所需的所有信息。