gpt4 book ai didi

ruby-on-rails - Ruby on Rails else If 问题

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:00 25 4
gpt4 key购买 nike

我有一个应用程序,在布局中我有一个 user_name div,它将根据他们是否登录、是否是管理员等显示不同的内容。现在我的代码如下:

  <% if current_user.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 %>

我已经有了一个 current_user 助手,当代码只是:

<% if 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 %>

现在,当我将其设为 elsif 语句时,当我以管理员身份登录时,它可以正常工作,并且我会显示带有正确链接的文本。当我不是管理员用户/注销时,我得到一个未定义的方法“role” for nil:NilClass 错误...我的 current_user 内容在我的应用程序 Controller 中声明如下:

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

有什么想法可以显示我想要的结果吗? “如果他们是一个角色属性等于 admin 的用户,他们会得到一些文本和登录链接,如果他们只是一个用户,他们会得到登录链接,如果他们没有登录,他们会得到注册和登录链接.

谢谢!

最佳答案

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

或使用 Rails >= 2.3

<% 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 %>

关于ruby-on-rails - Ruby on Rails else If 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com