Подтвердить что ты не робот

Форма Rails с использованием запроса GET: как удалить кнопки и параметры utf8?

Я просто пытаюсь создать простое меню выбора, которое приведет вас к определенному URL-адресу. Пока что у меня есть что-то вроде этого:

# haml
= form_tag new_something_path, method: :get do
  = select_tag :type, options_for_select(my_array)
  = submit_tag 'New Something'

Однако, когда я отправляю форму, я получаю параметр UTF8, а также параметр "commit" с текстом кнопки.

Как удалить параметры UTF8 и commit?

4b9b3361

Ответ 1

Удаление параметра commit относительно простое, вам нужно указать, что вход не имеет имени:

submit_tag 'New Something', name: nil

Что касается параметра UTF-8... это служит важной цели. Как только вы поймете цель Rails UTF-8 param, и по какой-то причине вам все равно нужно его удалить, решение проще, чем вы думаете... просто дон Не используйте помощник form_tag:

# haml
%form{action: new_something_path, method: 'get'}
  = select_tag :type, options_for_select(my_array)
  = submit_tag 'New Something', name: nil

Ответ 2

Вы можете избавиться от параметра utf8, добавив параметр enforce_utf8: false для form_tag (а также form_form), как form_form ниже:

= form_tag new_something_path, method: :get, enforce_utf8: false do

(спасибо @Dmitry за это)

Но, пожалуйста, убедитесь, что он вам не нужен: для чего нужен параметр _snowman в формах Ruby on Rails 3? (Я не уверен, действительно ли это актуально для форм GET.)

Дополнительный параметр, генерируемый кнопкой отправки, можно удалить, установив опцию name: false на вашем submit_tag (также работает для submit в случае form_for).

= submit_tag 'New Something', name: nil