【发布时间】:2014-11-07 15:41:41
【问题描述】:
当我尝试更改页面为特定路径时显示的内容时遇到了一个有趣的问题'
<body>
<% flash.each do |message_type, message| %>
<div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>
<!---both logged_in and is_admin are in session_helper-->
<%if current_page?(login_path) or current_page?(signup_path)%>
<p class = "title">CLOUD SOLAR</p>
<% else %>
<% if logged_in?%>
<% if is_admin?%>
<%= link_to "All Users", users_path%>
<% end%>
<%= link_to "Settings", edit_user_path(current_user)%>
<%= link_to "Log Out", logout_path, method: "delete"%>
<% else %>
<%= link_to "Sign Up", signup_path%>
<%= link_to "Log in", login_path%>
<% end %>
<% end %>
<%= yield %>
<!-- <%=debug(params) if Rails.env.development?%> -->
</body>
在上面的代码中,如果当前页面是注册或登录,我试图摆脱“注册”和“登录”链接。上面的代码工作正常,直到我用不正确的方法测试它电子邮件和密码。当我用错误的密码测试它时,会弹出一条消息(它应该!),但由于某种原因,注册和登录链接也会在它下面弹出。
鉴于上面的代码,我认为如果当前路由是 login_path 或 signup_path,它永远不会进入条件的 else 部分,但不知何故它做到了。
这里发生了什么?即使 url 仍然显示 localhost:3000/login 或 localhost:3000/signup ,当我输入错误信息时,路由是否会以某种方式被更改??
编辑:为澄清起见,如果登录表单出现某种错误,标题会完全消失。取而代之的是一个新的登录表单和一个闪烁的错误消息。 CLOUD SOLAR 的标题去哪儿了?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 rails-routing