Не могу получить рельсы current_page? метод для работы с GET и POST

Учитывая, что у меня есть следующие маршруты, определенные в routs.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 %>

Как мне получить и GET, и POST путь, который будет распознан current_page? Теперь, когда пользователь находится в #create, тег p не отображается. Я предполагаю, что это потому, что маршрут определен / регистрация как получение для пользователей #new, а публикация - это совсем другое.

Я пробовал следующее, но это не похоже на работу

<%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 ответ

Решение

current_page? всегда будет возвращать false по запросу POST.

Из документации:

Допустим, мы находимся в действии http://www.example.com/products с методом POST в случае недопустимого продукта.

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

Возможные обходные пути:

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

или же

if request.path == "/signup"
Другие вопросы по тегам