【问题标题】:same rails path displays different template if flash messages are present如果存在 flash 消息,相同的 rails 路径会显示不同的模板
【发布时间】: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


    【解决方案1】:

    您可以尝试将 login_path 和 signup_path 更改为 login_url 和 signup_url。另一种选择是对路径进行硬编码。

    current_page?(Rails.env.production? ? 'http://your_live_url/signup' : 'http://localhost:3000/signup')
    

    另外,您可以在此处查看文档: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-current_page-3F

    【讨论】:

    • 上述链接在生产时会如何变化?编辑:开玩笑的回答!
    • 查看我的编辑。使用此解决方案,链接将仅在生产中使用实时 url。
    • 我最终只是将其从 render 更改为 redirect_to 以某种方式解决问题。不过,我会在投入生产时尝试你的方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 2015-04-02
    • 2019-08-03
    • 1970-01-01
    • 2023-04-03
    • 2013-01-23
    相关资源
    最近更新 更多