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

时间:2010-12-28 09:59:13

标签: ruby-on-rails devise registration

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

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

然后,我按照

中的说明向sign_in用户提供了“sign_up”页面

Devise before filter that prevents access to "new_user_registration_path" unless user is signed-in

现在,在我尝试打开注册页面登录过程后,它总是指示我到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

谢谢大家!

3 个答案:

答案 0 :(得分:4)

我有其他决定。 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

答案 1 :(得分:2)

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

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

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

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

增加:

正如您在devise source中看到的那样,如果您导航到sign_up,它会执行before_filter require_no_authentication并重定向到您可以find here的根路径。

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

答案 2 :(得分:1)

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

<强> 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| %>
  <p><%= f.label :email %>
  <%= f.text_field :email %></p>

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

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

  <p><%= f.submit "Save" %></p>
<% end %>

config / routes.rb(Rails 3)

resources :user, :controller => "user"

链接到新用户页面

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