rot*_*ice 2 ruby ruby-on-rails ruby-on-rails-3
在我的Rails应用程序中,如果用户正在尝试创建一个新帐户,并且已经进行了会话(即已登录),我想显示一条消息"看起来您已经拥有一个帐户".
为此,我正在尝试使用以下代码检查当前会话:
<% if session[:user_id]? %>
<div id="error_expanation">Seems like you already have an account with us.
<% link_to "Sign in now", login %></div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
但是,此代码会导致以下错误:
compile error
/path/to/app/views/users/_form.html.erb:17: syntax error, unexpected ';'
');@output_buffer.safe_concat(' ...
^
/path/to/app/views/users/_form.html.erb:42: syntax error, unexpected kENSURE, expecting $end
Run Code Online (Sandbox Code Playgroud)
我很确定'session [:user_id]?' 这导致了问题,因为如果我用另一个if语句替换它,它就可以了.
有什么想法我需要修理来检查这个吗?谢谢!
哦,如果需要的话,这是我的sessions_controller.rb:
class SessionsController < ApplicationController
def edit
session[:return_to] = request.referer
end
def new
end
def create
if user = User.authenticate(params[:email], params[:password])
session[:user_id] = user.id
session[:user_name] = user.name
redirect_to admin_url
else
redirect_to login_url, :alert => "Invalid username / password combination"
end
end
def destroy
session[:user_id] = nil
redirect_to admin_url, notice => "You've successfully logged out."
end
end
Run Code Online (Sandbox Code Playgroud)
我建议改变这一行:
<% if session[:user_id]? %>
至
<% if session[:user_id] %>
这应该解决问题.更干净的解决方案是向您的应用程序控制器添加一个函数调用,如下所示:
class ApplicationController
def user_is_logged_in?
!!session[:user_id]
end
end
然后你可以做以下事情:
<% if user_is_logged_in? %>
| 归档时间: |
|
| 查看次数: |
11838 次 |
| 最近记录: |