RoR: Как предотвратить изменение URL после неправильного редактирования? - PullRequest
1 голос
/ 25 мая 2010

В стандартном сгенерированном проекте скаффолда, когда вы находитесь на странице редактирования, URL выглядит так;

/ что-то / 3 / редактировать

Однако, когда страница не проверяется, она запускает следующий код:

   format.html { :action => "edit" }

и URL страницы изменится на;

/ что-то / 3

(нет / редактировать)

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

Это потому что рендеринг не меняет URL.

Когда вы сделали обновление, вы сделали:

PUT /something/3

Так что, если это не удалось, URL не меняется. просто рендеринг вашего файла действий (не код действия).

Итак, если вы хотите иметь /new из /edit, вам нужно сделать:

redirect_to :edit

В этом случае вы потеряли всю информацию, такую ​​как object.errors.

0 голосов
/ 25 мая 2010

Вы уверены, что в случае ошибки код format.html { :action => "new" }?

должно быть

format.html { :action => "edit" }

Я проверил его в своем собственном коде скаффолдинга, и в этой строке я получил «редактировать» вместо «новый».

Надеюсь, это поможет.

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