如何使用不同的控制器而不是注册?

时间:2014-05-29 11:01:16

标签: ruby-on-rails devise controller registration

我是铁杆和设计的新手。我开发了一个带有rails的示例应用程序,它具有注册模型和注册控制器。所以,当我将设计添加到我的应用程序时。它不起作用!!我认为这是因为设计使用名为注册的控制器,我在我的应用程序中有另一个名为注册的控制器。

我的具体问题是:用户无法注册。当我尝试注册重定向到不存在的/ registrations / user的应用程序时,我遇到了匹配的路由错误。

我的RegistrationsController看起来像这样:

class RegistrationsController < ApplicationController 

    def index
    @registrations = Registration.all
    respond_to do |format|
      format.html
    end
    end

    def show
    @registration = Registration.find(params[:id])
    end

    def new
    @registration = Registration.new 3.times { @registration.students.build }
    end

    def create

    @registration = Registration.new(params[:registration])

    if params[:file] != nil
      import(params[:file])
    end

    if @registration.save
      redirect_to @registration, :notice => "Successfully created registration."
    else
      render :action => 'new'
    end
end

我不知道如何解决这个问题?请告诉我如何使用具有不同名称的另一个控制器而不是设备的注册。

1 个答案:

答案 0 :(得分:1)

好吧,通常当您将devise gem添加到项目中时,它开箱即用。您不需要创建任何控制器和视图。它是rails generate devise:install为您自动生成的。

所以我建议你删除你的控制器并依赖Devise。

但是,如果默认行为不能满足您的需求,您可以通过在路线中添加以下代码轻松覆盖它:

devise_for :users, controllers: { registrations: 'registrations' }

并定义像这样的控制器

Users::RegistrationsController < Devise::RegistrationsController

def new
#overwriting the default behavior for new here
end

end

注意:我对上面的代码做了一些假设。