2015-05-28 70 views
0

我有問題有關的登錄和註銷的鏈接。Rails邪惡的寶石

我不使用設計的寶石

在我的代碼我已經給出了以下鏈接

<% if current_user %> 
    <li><%= link_to 'Logout',{:controller=>'sessions', :action=> 'destroy'}%></li> 
<% else %> 
    <li> <%= link_to 'Signup',{:controller =>'users', :action => 'new'} %> </li> 
    <li> <%= link_to 'Login,{:controller =>'sessions', :action => 'new'} %> </li> 
<% end %> 

我現在用的是邪惡的寶石,其還具有以下步驟:

include Wicked::Wizard 
steps :business, :login, :payment 

如果用戶在users_controller中輸入了新方法的form_for值並提交,則用戶轉到下一步,但上面顯示的鏈接是「註銷」,即用戶在signu之前登錄頁。

怎麼辦?

PLS,給出的任何溶液理解

users_controller.rb:

def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(user_params) 
    if @user.save 
     @user.update_attributes(user_params) 
     session[:user_id]= @user.id 
     redirect_to user_steps_path 
    else 
     render :new 
    end 
    end 

    private 
    def user_params 
    params.require(:user).permit(:fname, :lname, :email, :mob, :gender, :country, :state, :suburb, :postal ,:add) 
    end 
end 

user_steps_controller.rb

include Wicked::Wizard 
    steps :business, :login, :payment 

    def show 
    @user = current_user 
    render_wizard 
    end 

    def update 
    @user = current_user 
    params[:user][:current_step] = step 
    session[:user_id]= @user.id 
    @user.update_attributes(user_params) 
    render_wizard @user 
    end 

    private 
    def redirect_to_finish_wizard(options = nil) 
    redirect_to root_url 
    end 

    def user_params 
    params.require(:user).permit(:current_step,:cmpyname, :abnacn, :cmpyadd, :cmpydet,:cash, :paypal,:bsb,:usrname,:password, :password_confirmation, :selcat, :protit, :prodes) 
    end 
end 

類ApplicationController中<的ActionController ::基地

protect_from_forgery with: :exception 
    helper_method :current_user 


    private 
    def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
    end 

end 
+0

能您請詳細說明您的多步表單,即您擁有的各個步驟以及您所面臨的問題。 –

+0

因此,雖然有用戶記錄,但您不會將註冊分類爲完整嗎?聽起來你需要一個用戶的方法(或者使用它們的主講人/裝飾者)來表示註冊完成。那麼你可以'如果current_user && current_user.sign_up_complete?' –

+0

謝謝@japed,但你能給出答案,表明註冊完成 –

回答

0

你需要創建後退出的用戶,你可以做這樣的事情

if resource.save 
    sign_out resource # resource = @user 

您可能需要重寫的就是圖謀註冊控制器,如果你使用的是設計!

編輯:

在你create動作要設置爲新創建的用戶會話,從create行動刪除此行

session[:user_id]= @user.id 

希望這有助於!

+0

我沒有使用設計 –

+0

然後在註冊用戶後清除會話 – RSB

+0

請問您能否演示如何清除會話@RSB –

0

而是與CURRENT_USER檢查,你應該檢查<% if session[:user_id].present? %>

它可能會解決你的問題

+0

我不使用設計 –

+0

那麼你如何獲得current_user輔助方法? –

+0

使用bcrypt gem- @adnan –

0

在你的意見只是檢查,如果用戶登錄,顯示你的腳步形式:

<% if user_signed_in?%> 
instead of 
<% if current_user%>