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

MID*_*MID 8 overriding ruby-on-rails devise

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

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

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

Paypal行动:

class RegistrationsController < Devise::RegistrationsController

def paypal  
end 
...
end
Run Code Online (Sandbox Code Playgroud)

routes.rb中:

 devise_for :users, :controllers => {:registrations => 'registrations', :sessions => 'sessions'} do
    match 'paypal' => 'registrations#paypal'
  end
Run Code Online (Sandbox Code Playgroud)

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

   NoMethodError in Registrations#paypal
   Showing C:/1508/app/views/devise/registrations/new.html.erb where line #22 raised: 
Run Code Online (Sandbox Code Playgroud)

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

Kos*_*aut 0

你的问题似乎有点不清楚,但是为什么不显式渲染视图呢?

def paypal
    render 'devise/registrations/paypal' 
end
Run Code Online (Sandbox Code Playgroud)

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

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