5

鉴于我在 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 路径?现在只要它在 users#create 中,p 标签就不会显示。我假设这是因为路由将 /signup 定义为用户#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 %>

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

4

1 回答 1

16

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"
于 2014-11-08T00:33:45.450 回答