Ошибка ввода не найдена с простой формой после редактирования и сохранения файлов

Я пытаюсь реализовать собственный поддельный ввод (в этой статье) с простой формой For. Это мой код:

<%= simple_form_for :results, { url: admin_add_sites_path } do |f| %>
  <%= f.input :no_merchandisers, as: :fake %>
  <%= f.input :site_codes_to_add, as: :fake %>
  <%= f.submit "Submit" %>
<% end %>

Когда я впервые реализовал ввод, я получил ошибку:

No input found for fake

Ответ на этот вопрос о переполнении стека говорит мне перезапустить сервер. Это временно устраняет указанную выше проблему для меня.

Но всякий раз, когда я редактирую и сохраняю файл (это происходило при редактировании файла контроллера), ошибка снова появляется, и мне приходится перезапускать сервер, чтобы продолжить. Кто-нибудь еще испытал это раньше? Это можно как-то исправить?


person Jonathan Yeong    schedule 22.03.2016    source источник
comment
Я не слышал о поддельных входных данных, но попробуйте добавить value: nil к вашим входным данным. Это может сработать.   -  person Ryan K    schedule 22.03.2016
comment
Извините за уточнение; из статьи Fake input: Иногда мне просто нужен пользовательский ввод для дополнительных параметров. Но все существующие вводы считываются из атрибутов объекта. Я использую его, потому что :no_merchandisers и :site_codes_to_add не являются столбцами в модели. Но я все еще хочу захватить их данные.   -  person Jonathan Yeong    schedule 22.03.2016


Ответы (1)


Есть несколько решений этой проблемы, которые я регулярно использую (хотя я не использую Simple Form). Во-первых, использовать value: nil. Все, что он делает, это переопределяет метод value по умолчанию, который обычно ищет атрибут модели. Он по-прежнему отправляется вместе с остальной частью формы.

<%= f.input :no_merchandisers, value: nil %>

Второе решение состоит в том, чтобы использовать ввод «тег», в зависимости от того, что вы вводите на самом деле:

<%= text_field_tag "results[no_merchandisers]", value_variable %>

или, может быть:

<%= check_box_tag "results[no_merchandisers]", value_variable, checked_variable %>

Теперь ни одно из этих решений не устраняет проблему as: :fake, а просто полностью заменяет ее. Я не знаком с Simple Form, поэтому не знаю, как этот дополнительный код будет (или не будет) работать.

person Ryan K    schedule 22.03.2016
comment
Я думаю, что использование параметра тега, а затем стилизация формы без использования простой формы, может быть выходом. Простая форма — это всего лишь оболочка вокруг form_for, которая должна принять модель. Если бы я хотел иметь форму без модели, то ввод тега был бы решением, я думаю. Спасибо, что нашли время ответить этому Райану. - person Jonathan Yeong; 23.03.2016