我遇到了与登录和退出相关的链接问题。
我没有使用设计宝石
在我的代码中,我提供了以下链接
<% 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值并提交,则用户进入下一步,但上面显示的链接是“Logout”,即用户在注册前登录。
怎么办?
请给予任何解决方案
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
class ApplicationController&lt;的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)
您需要在创建用户后退出用户,您可以执行此类操作
if resource.save
sign_out resource # resource = @user
如果你正在使用设计,你可能需要覆盖设计注册控制器!
编辑:
在create
操作中,您要为新创建的用户设置会话,请从create
操作中删除此行
session[:user_id]= @user.id
希望这有帮助!
答案 1 :(得分:0)
您应该检查<% if session[:user_id].present? %>
它可以解决您的问题
答案 2 :(得分:0)
如果用户已登录以显示您的步骤表单,请检查您的观看次数:
{
"error": {
"code": 500,
"message": null
}
}