2012-06-08 53 views
0

在我的應用程序中,即時通訊不允許用戶註冊,並由唯一的管理員用戶管理,因爲應用程序僅用於由一小部分人使用。如何在用戶創建後改變重定向路徑?

當時雖然我創建了一個用戶。我被定向到我創建的用戶正在自動登錄,並且正在通過閃光消息重定向到主頁,感謝我登錄。

這是不正確的,現在是我創建更多的問題然後一個用戶我收到一個錯誤,告訴我,即時通訊已經簽署。

這裏是我的user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :username, :password, :password_confirmation, :remember_me 
end 

我users_controller.rb

class UsersController < ApplicationController 
    # GET /users 
    # GET /users.xml 
    def index 
    @users = User.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @users } 
    end 
    end 

    # GET /users/1 
    # GET /users/1.xml 
    def show 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @user } 
    end 
    end 

    # GET /users/new 
    # GET /users/new.xml 
    def new 
    @user = User.new 
    @current_method = "new" 

    respond_to do |format| 
     format.html # new.html.erb 
     format.xml { render :xml => @user } 
    end 
    end 

    # GET /users/1/edit 
    def edit 
    @user = User.find(params[:id]) 
    end 

    # POST /users 
    # POST /users.xml 
    def create 
    @user = User.new(params[:user]) 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
     format.xml { render :xml => @user, :status => :created, :location => @user } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    # PUT /users/1 
    # PUT /users/1.xml 
    def update 
    @user = User.find(params[:id]) 

    respond_to do |format| 
     if @user.update_attributes(params[:user]) 
     format.html { redirect_to(@user, :notice => 'User was successfully updated.') } 
     format.xml { head :ok } 
     else 
     format.html { render :action => "edit" } 
     format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /users/1 
    # DELETE /users/1.xml 
    def destroy 
    @user = User.find(params[:id]) 
    @user.destroy 

    respond_to do |format| 
     format.html { redirect_to(users_url) } 
     format.xml { head :ok } 
    end 
    end 
end 

我的路線

DocumentManager::Application.routes.draw do 

    devise_for :users 

    get "index/index" 
    devise_for :users, :controllers => {:sessions => 'sessions'} 
    resources :clients, :jobs, :users 


end 

任何人都可以指向正確的方向或知道如何獲得我尋找的功能嗎?

正如我所說。我需要重定向回到用戶創建屏幕,用戶不要自動登錄,並且Flash消息是不一樣的。

+3

你確定你要進入你的UsersController#創建行動,並不要Devise :: RegistrationsController#create?你可以請你出示你的表格嗎? – alony

回答

0

發生這種情況是因爲您使用的設計註冊控制器註冊後登錄用戶。此外,您並未禁用註冊模塊,因此每個人都可以創建一個訪問/users/sign_up的帳戶。

爲了做到你想要什麼,這樣做:

  1. 取出registerable模塊;
  2. 通過before_filter將用戶控制器的訪問限制爲只有管理員;
  3. 刪除您的路線中的devise_for之一;
  4. 使用用戶控制器來創建您的用戶;

您也可以設置一個隨機密碼,並要求用戶生成首次密碼登錄後發送修改密碼的鏈接。