Rails - сбивается с толку из-за изменения URL-адреса при сбое проверки модели - PullRequest
4 голосов
/ 21 октября 2011

У меня есть пользовательский ресурс, где :name - обязательный атрибут модели.

Если я пытаюсь создать нового пользователя без имени, проверка завершается неудачно, и сообщения об ошибках отображаются в верхней части формы, как и ожидалось, , но URL-адрес страница изменится с /users/new на /users?

Я не заметил такого поведения до вечера, когда впервые начал играть с капибарой, и ожидал, что current_path после ошибки проверки будет http://localhost:3000/users/new

Я не мог понять, почему моя спецификация перестала работать:

it 'should not create an invalid user' do
  fill_in "Name", :with=>""
  click_button "Create User"
  current_path.should == new_users_path
end

Я подтвердил, что это происходит во всех моих других приложениях rails, поэтому я понимаю, что так работает рельсы, но я действительно не понимаю, что здесь происходит. Почему это работает так? Почему путь меняется с new_users_path на users_path при сбое проверки?

Это очень смутило меня

1 Ответ

3 голосов
/ 21 октября 2011

Это совершенно нормально.

В базовом CRUD вы создаете своих пользователей, используя POST запрос к /users.

Если проверка не пройдена, вы просто визуализируете edit просмотр, но это не меняет URL.

Чтобы изменить URL, вам нужно redirect_to, но при этом вы потеряете информацию, связанную с выполненной проверкой.

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