我正在使用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)
我做错了什么?
答案 0 :(得分:1)
首先,你不能在devise_for
上调用一个块,它不是这样设置的。 Devise确实提供了一个可以使用的辅助方法,允许您在Devise路由上调用一个块。请参阅README。
其次,设计路线和范围设计路线,仅适用于Devise路线。您的方法不在任何Devise控制器中,因此不能为Devise调用它。您需要使用单独的users_controller.rb
方法在模型上调用verify_paypal
。然后,您可以在resources users
上的阻止调用中设置自定义路由。有关Rails路由堆栈的更多信息,我建议您阅读Rails Routing From the Outside In。这应该为您提供调用自定义操作所需的所有信息。