9
votes

Rubis sur rails d'autre si question

J'ai une application où dans la mise en page J'ai un nom_name DIV qui affichera différentes choses en fonction de la connexion ou de la connexion, sont un administrateur, etc., mon code est le suivant:

helper_method :current_user


private

def current_user_session
  return @current_user_session if defined?(@current_user_session)
  @current_user_session = UserSession.find
end

def current_user
  return @current_user if defined?(@current_user)
  @current_user = current_user_session && current_user_session.record
end


0 commentaires

3 Réponses :


13
votes
<% if current_user.try(:role) == "admin" %>
  <p id="admintxt">You are an admin!</p>
  <%= link_to "Edit Profile", edit_user_path(:current) %>
  <%= link_to "Logout", logout_path %>
<% elsif current_user %>
  <%= link_to "Edit Profile", edit_user_path(:current) %>
  <%= link_to "Logout", logout_path %>
<% else %>
  <%= link_to "Register", new_user_path %>
  <%= link_to "Login", login_path %>
<% end %>

2 commentaires

En regardant cela me fait vraiment apprécier Haml. :)


J'ai écrit erb mais je n'ai jamais compris à quel point il est moche jusqu'à ce que je voie ça. J'apprécie maintenant réagir



3
votes
<% if current_user and current_user.role == "admin" %>
This should prevent the error when there is no user logged in, but you could restructure the whole block in order to remove the redundant tests against current_user being nil.

0 commentaires

5
votes

masque le rôle Vérification de la boucle d'utilisateur actuelle, qui a l'effet secondaire de simplifier votre conditionnel.

<% if current_user %>
  <%= content_tag(:p, "You are an admin!", :id=>"admintxt") if current_user.role == "admin" %>
  <%= link_to "Edit Profile", edit_user_path(:current) %>
  <%= link_to "Logout", logout_path %>
<% else %>
  <%= link_to "Register", new_user_path %>
  <%= link_to "Login", login_path %>
<% end %>


1 commentaires

Merci beaucoup, comme je écrivais la boucle, je savais qu'il y avait certainement un moyen de le simplifier. J'apprends beaucoup!