перенаправьте к псевдониму маршрута на ошибке проверки формы

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

В данный момент это представляет / новый

Я мог сделать redirect_to register_path, но затем я потеряю параметрические усилители?

Это делает следующий тестовый сбой:

  Scenario: Try registering with a bad staff number
Given I am on the registration page
When I fill in "email" with "kevin@acme.com"
And I fill in "First Name" with "Kevin"
And I fill in "last name" with "Monk"
And I fill in "Employee Number" with "something barking123"
And I press "Register"
Then I should be on the registration page
And I should see "Your employee ID number looks incorrect."
5
задан Kevin Monk 26 May 2010 в 18:04
поделиться

4 ответа

Rails Way заключается в том, чтобы снова отобразить «новое» (т.е. зарегистрировать) действие, поскольку вы создали объект, форма будет содержать ранее введенные значения, а также сообщения об ошибках. Если вы перенаправляете, вам нужно будет сохранить объект в сеансе или в базе данных, прежде чем выполнять перенаправление. Когда вы отклоняетесь от условностей, всегда хорошо быть уверенным, что вы делаете это по уважительной причине.

1
ответ дан 15 December 2019 в 06:19
поделиться

Вызов рендеринга из действия будет означать, что URL-адрес останется неизменным по сравнению с get'd или POST'd. Причина, по которой URL-адрес является /new, заключается в том, что 'Register' должен быть POST'ing to /new. Если вы хотите, чтобы эта функция прошла, вы должны изменить «Тогда я должен быть на странице регистрации» на «Тогда я должен быть на новой странице регистрации» и написать соответствующий веб-шаг, на мой взгляд.

1
ответ дан 15 December 2019 в 06:19
поделиться

На самом деле, это похоже на исправление одной строки в тесте. (Почему вы предпочитаете находиться на странице / register?).

Если это действительно важно, вы также можете временно спрятать параметры в сеансе var.

0
ответ дан 15 December 2019 в 06:19
поделиться

Если вы действительно этого хотите, вы можете объединить действие «создать» с действием «новое», а действие «обновить» - с действием «редактировать». Затем вам нужно будет проверить тип запроса и обработать его соответствующим образом.

Это достигнет того, о чем вы просите. Кроме того, люди смогут использовать URL-адрес «ошибки» и по-прежнему переходить на действующую страницу. То есть даже после получения ошибки они могут скопировать / вставить URL-адрес, и для него будет действующая страница GET.

При этом, это серьезный взлом, и я не рекомендую вам это делать. Вам придется много работать, а выгода крошечная.

Изменить: пример ..

def new
  if request.get?
    @user = User.new

  elsif request.post?
    @user = User.new(params[:user])
    if @user.save
      redirect_to users_path
    else
      render :new
    end
  end
end

Вам также потребуется добавить собственные маршруты.

0
ответ дан 15 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: