2015-05-28 119 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%>