Rails设计:登录后如何访问注册页面?

我是rails的新手,我正在使用“devise”gem进行身份validation。

首先,我通过默认注册页面添加新用户(例如/ users / sign_up)

然后,我通过以下说明向sign_in用户提供“sign_up”页面

在filter之前进行设计,以防止访问“new_user_registration_path”,除非用户已登录

现在,在我尝试打开注册页面登录过程后,它总是指示我到root_path! 我如何访问注册页面?
我的“roots.rb”文件如下:

Example::Application.routes.draw do devise_for :users, :controllers => { :registrations => 'registrations'} resources :companies resources :orders resources :customers root :to => "welcome#index" end 

谢谢你们!

如果您已登录,我处理能够创建新用户的方案的方式是生成用户控制器并使用新的和创建将保存到用户模型的操作方法。 (这是从我正在处理的当前应用程序中删除的,所以希望我没有错过任何内容)

user_controller.rb

 def new @user = User.new end def create @user = User.new(params[:user]) if @user.save flash[:notice] = "Successfully created User." redirect_to root_path else render :action => 'new' end end 

视图/用户/ new.html.erb

 <%= form_for @user, :url => user_index_path do |f| %> 

<%= f.label :email %> <%= f.text_field :email %>

<%= f.label :password %> <%= f.password_field :password %>

<%= f.label :password_confirmation %> <%= f.password_field :password_confirmation %>

<%= f.submit "Save" %>

<% end %>

config / routes.rb(Rails 3)

 resources :user, :controller => "user" 

链接到“新用户”页面

 <%= link_to 'New User', new_user_path %> 

我有其他决定。 Bitterzoet说

正如您在设计源中看到的那样,如果导航到sign_up,它将执行before_filter require_no_authentication,并重定向到您可以在此处找到的根路径。

您不需要覆盖registration_controller,您只能更改回显原始registration_controller的自定义registration_controller。

 class Admin::RegistrationsController < Devise::RegistrationsController layout 'admin' prepend_before_filter :require_no_authentication, :only => [] prepend_before_filter :authenticate_scope! end 

如果您被重定向,则可能意味着当您导航到该页面时未正确validation,因为它需要有效的用户会话。

请发布您的注册控制器文件。

如果您被重定向,则可能意味着当您导航到该页面时未正确validation,因为它需要有效的用户会话。

请发布您的注册控制器文件。

加成:

正如您在设计源中看到的那样,如果导航到sign_up,它将执行before_filter require_no_authentication,并重定向到您可以在此处找到的根路径。

我认为如果你真的想要覆盖这种行为,你必须显式覆盖我首先链接的registrations_controller 🙂