【发布时间】:2015-05-28 10:18:16
【问题描述】:
我遇到了与登录和注销链接相关的问题。
我没有使用设计 gem
在我的代码中,我给出了以下链接
<% 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 %>
我正在使用 wicked gem,它也有以下步骤:
include Wicked::Wizard
steps :business, :login, :payment
如果用户在 users_controller 中输入新方法的 form_for 值并提交,用户会进入下一步,但上面显示的链接是“注销”,即用户在注册前已登录。
怎么办?
请提供任何解决方案
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
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
【问题讨论】:
-
您能否详细说明您的多步骤表单,即您拥有的各个步骤以及您面临的具体问题是什么?
-
所以虽然有用户记录,但您没有将注册归类为完整?听起来您需要用户(或演示者/装饰者,如果使用它们)的方法来指示注册已完成。然后你可以做
if current_user && current_user.sign_up_complete? -
谢谢@japed,但你能给出答案以表明注册已完成
-
@NitinRajan 不,就像 Adnan 说的那样,您没有指出用户必须执行哪些步骤才能被归类为完整注册。
标签: ruby-on-rails ruby-on-rails-4 wicked-gem