如何在Devise注册控制器中添加新操作?

时间:2012-08-16 09:01:39

标签: ruby-on-rails devise override

我知道如何覆盖默认控制器并且它正常工作,但现在我需要在注册控制器中添加新操作。

我需要更新用户字段。我需要在此表单中添加名字和姓氏,但我不想使用标准的编辑页面,因为它将是单独的页面。

所以我需要其他页面。我在我的注册文件夹中有paypal..html.erb,但是我无法从注册控制器中的操作中呈现它。

Paypal行动:

class RegistrationsController < Devise::RegistrationsController

def paypal  
end 
...
end

routes.rb中:

 devise_for :users, :controllers => {:registrations => 'registrations', :sessions => 'sessions'} do
    match 'paypal' => 'registrations#paypal'
  end

但不知何故它呈现新的注册文件。这是错误:

   NoMethodError in Registrations#paypal
   Showing C:/1508/app/views/devise/registrations/new.html.erb where line #22 raised: 

我如何使用更新表单来执行此操作以及我做错了什么?

2 个答案:

答案 0 :(得分:1)

我将此添加到我的路线中以使其正常工作

devise_scope :user do
  get 'paypal(/:id)', :action => 'paypal', :controller => 'user/registrations', :as => 'paypal'
end

答案 1 :(得分:0)

您的问题似乎有点不清楚,但为什么不明确渲染视图?

def paypal
    render 'devise/registrations/paypal' 
end

如果您有多种类型的用户,最好将路径和路由分开。

https://github.com/plataformatec/devise/wiki/How-To%3a-Customize-routes-to-user-registration-pages