鉴于我在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 %>
编辑:我有帖子的原因是因为如果注册表单有错误,它会重定向回到注册页面,但这次由于某种原因,操作不再是新的,而是创建
答案 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"