添加自定义操作以设计注册..未知操作错误

时间:2012-10-07 20:22:55

标签: ruby-on-rails devise

在谷歌搜索到我如何解决这个问题后,我决定发布一个问题。我正在尝试向Devise Registrations控制器添加自定义操作“create_pro”,以便创建具有其他字段的用户(专业用户)。此表单与用户的设计创建操作位于同一页面上。

提交表单后,我一直收到以下错误:

  

未知行动

     

无法找到“create_pro”操作   设计:: RegistrationsController

我该如何解决这个问题?

路线

  devise_for :users,:controllers => { :registrations => "registrations" }
  devise_scope :user do
    post "gopro", :to => "devise/registrations#create_pro"
  end

注册控制器

class RegistrationsController < Devise::RegistrationsController
  before_filter :authenticate_user!, :only => :token

  def new
    super
  end

  def create
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      flash[:notice] = "Welcome to Banking Analytics."
      redirect_to '/mybank'
    else
      render :action => :new
    end
  end

  def create_pro
    @user = User.new(params[:user])
    if @user.save
      sign_in @user
      flash[:notice] = "Welcome to Banking Analytics."
      redirect_to '/mybank'
    else
      render :action => :new
    end
  end
end

查看

<div class="signup_form_basic">
<%= simple_form_for @user, :url => url_for(:controller => 'registrations', :action => 'create_pro') do |f| %>
  <%= f.error_notification %>
    <%= f.input :email, :required => true, :autofocus => true, :label => 'Username ( Your Email )', :placeholder => 'Email Address' %>
    <%= f.input :password, :required => true, :autofocus => true, :label => 'Password', :placeholder => 'Password' %>
    <%= f.input :password_confirmation, :required => true, :autofocus => true, :label => 'Confirm Password', :placeholder => 'Password Confirmation' %>
    <%= f.button :submit, "Sign Up  >>", class: 'btn btn-inverse' %>
<% end %>
</div>

1 个答案:

答案 0 :(得分:1)

我对你所面临的'未知动作错误'没有答案,但我认为目前的解决方案不是最佳的。

由于您的目标是拥有以下两类用户

  1. 专业用户和
  2. 常规(非专业)用户,
  3. 最好遵循How To: Customize routes to user registration pages的建议,并为这两类用户设置并行结构。

    这将更符合两类用户之间的关系。