我是铁杆和设计的新手。我开发了一个带有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
我不知道如何解决这个问题?请告诉我如何使用具有不同名称的另一个控制器而不是设备的注册。
答案 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
注意:我对上面的代码做了一些假设。