В моем приложении на 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 %>
Однако этот код приводит к следующей ошибке:
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
Я почти уверен, что это сессия [: user_id]? это вызывает проблему, потому что если я заменю его чем-то из другого оператора if, это сработает.
Есть идеи, что мне нужно исправить, чтобы проверить это? Спасибо!
О, а вот мой файл session_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