Vérification pour une session
Dans mon application Rails, si l'utilisateur tente de créer un nouveau compte, et a déjà une session (c'est à dire connecté), je veux afficher un message qui dit "On dirait que vous avez déjà un compte".
Pour ce faire, je suis en train de vérifier pour une session avec le code suivant:
<% 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 %>
Toutefois, ce code génère l'erreur suivante:
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
J'en suis sûr, est la "session[:user_id]?" qui est à l'origine du problème, parce que si je le remplace par quelque chose d'autre, si une déclaration, il fonctionne.
Une idée de ce que j'ai besoin de le corriger afin de vérifier cela? Merci!
Oh, et voici mon sessions_controller.rb si c'est nécessaire:
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
Vous devez vous connecter pour publier un commentaire.
Je voudrais suggérer de changer cette ligne:
à
Qui devrait résoudre le problème. La meilleure solution serait d'ajouter un appel de fonction à votre contrôleur d'application comme ceci:
Ensuite, vous pouvez effectuer les opérations suivantes:
essayer
<% if session[:user_id] != nil %>
Je vous invite fortement à utiliser quelque chose comme Périphérique pour la connexion de la logique, comme il va être plus sécurisé que n'importe quel rouleau-votre-propre-code. Ensuite, vous pouvez faire quelque chose comme:
<%= dowhatever if user_signed_in? %>