Рендеринг нового в форме ошибка не меняет URL - PullRequest
0 голосов
/ 01 марта 2019

У меня есть форма в моем приложении Rails с очень простым контроллером, и если форма не может быть сохранена, я бы хотел отобразить :new, чтобы показать ошибки:

def create
    @health_profile = HealthProfile.new(health_profile_params)

    if @health_profile.save
        redirect_to :somewhere_else
    else
        render :new
    end
end

Это прекрасно работает,но URL-адрес изменяется от /health_profiles/new до /health_profiles после попытки создания записи.Есть ли способ позвонить на render :new и сделать так, чтобы URL отражал, что пользователь на /health_profiles/new?Если бы они обновили страницу, пока URL показывает /health_profiles, она загрузила бы :index, а это не то, что я хочу.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Поскольку вы отправляете форму (по URL-адресу, указанному в атрибуте "action" формы).Это нормально.Не меняйте URL.

0 голосов
/ 01 марта 2019

Не совсем.В основном у вас есть три варианта:

  1. Вы можете использовать JS для изменения URL после повторного рендеринга нового представления.

  2. Вы можете изменить render на redirect_to, но вы потеряете ошибки в @health_profile, поэтому вам придется полагаться на flash, чтобы показать свои ошибки.

  3. Вы можете изменить все свои маршруты, чтобы вы могли POST / PUT к маршруту new и поместить некоторую условную логику в вашем действии new для перехода на основе request.method

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...