无法获得rails current_page?使用GET和POST的方法

时间:2014-11-07 19:38:23

标签: ruby-on-rails ruby-on-rails-4 rails-routing current-page

鉴于我在routes.rb中定义了以下路由

get "signup" => "users#new"
post "signup" => "users#create"

以及我的erb视图中的以下条件

<%if current_page?(login_path) or current_page?(signup_path)%>
        <p> NOW YOU'RE IN</p>
<% end %>

如何让current_page识别GET和POST路径?现在,只要用户#create,p标签就不会显示。我假设它是因为路由定义/注册为用户#new获取,而post是完全不同的。

我已尝试过以下操作,但似乎无法正常工作

<%if current_page?(login_path) or current_page?(signup_path) or current_page?(controller: "users", action: "create")%>
            <p> NOW YOU'RE IN</p>
    <% end %>

编辑:我有帖子的原因是因为如果注册表单有错误,它会重定向回到注册页面,但这次由于某种原因,操作不再是新的,而是创建

1 个答案:

答案 0 :(得分:14)

current_page?将始终在POST请求中返回false。

来自文档:

  

假设产品无效,我们会使用方法POST进行http://www.example.com/products操作。

current_page?(controller: 'product', action: 'index') 
# => false

可能的解决方法:

if controller.controller_name == "users" && controller.action_name == "create"

if request.path == "/signup"