Рельсы закрываются без сохранения со страницы редактирования - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть типичное приложение CRUD, я хотел бы добавить ссылку рядом с f.submit, которая позволяет вам вернуться к индексу без сохранения изменений. Я думал, что это будет так же просто, как просто сделать ссылку на индекс, но это все равно сохранит изменения.

<%= button_to 'Close Without Saving', users_path %>
<%= f.submit %>

Какой способ справиться с этим?

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Из тонкой инструкции :

[button_to] Создает форму, содержащую одну кнопку, которая отправляет URL-адрес, созданный с помощью набора параметров.

Таким образом, использование button_to внутри формы будет пытаться создать вложенную форму, но HTML-формы не будут вложенными. Результатом будет структура HTML примерно такая:

<form>
    <form><!-- from button_to -->
        <input type="submit">
    </form>
    <input type="submit"><!-- from f.submit -->
</form>

Но браузер игнорирует внутренний <form> и предположит, что вы имели в виду это:

<form>
    <input type="submit"><!-- from button_to -->
    <input type="submit"><!-- from f.submit -->
</form>

Затем, нажав либо <input type="submit">, вы отправите внешнюю форму.

Вы можете либо создать еще одну кнопку отправки во внешней форме, и контроллер может проверить, какая кнопка была нажата, или вы можете использовать link_to и настроить ссылку так, чтобы она соответствовала вашей кнопке отправки (или оставить ее в стиле ссылки в зависимости от вашего предпочтение).

0 голосов
/ 12 ноября 2011
<button type="button" onClick="location.href='<%= users_path %>'">Close Without Saving</button>
<%= f.submit %>

Это тоже сработало ... вернулся к основам и использовал старый добрый HTML.

...