rails 5 simple_form изменяет тип ввода с выбора на строку после ошибки - PullRequest
0 голосов
/ 11 октября 2018

У меня есть следующая форма:

<%= simple_form_for [@customer, @transaction] do |f| %>
<%= f.error_notification %>

<div class="form-inputs">
  <%= f.input :status, :collection => ["payment request"], include_blank: false %>
  <%= f.input :processor, collection: @processors ,label_method: :name, value_method: :id, label: "Processor" %>
  <%= f.input :processor_bank_account, collection: @bank_accounts , label_method: :bank_name, value_method: :id, label: "Processor Bank Account" , include_blank: true %>
  <%= f.input :tcurrency, collection: @currencies, label: 'currency', include_blank: false %>
  <%= f.input :amount, as: :integer, label: 'amount' %>
  <%= f.input :language, collection: @languages, include_blank: false, label: 'choose a language: english or arabic' %>
</div>

<div class="form-actions text-center">
  <%= f.button :submit, "Add transaction", class: "form-button"%>
</div>
<% end %>

Входные данные для процессора и processor_bank_account являются полями 'select' и поэтому отображаются как выпадающие для пользователя.

Однако, если форма возвращаетошибка, тип формы для обоих этих полей изменяется с 'select' на 'string' и показывает регистр ActiveRecord выбранных полей:

См. пример формы после ошибок

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

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

1 Ответ

0 голосов
/ 11 октября 2018

Проблема решена.

Форма перерисовывается при появлении ошибки, но это происходит с помощью метода 'create' в контроллере, а не метода 'new' для новой формы.

Коллекции @processors и @bank_accounts были доступны для нового метода, но не для метода create, поэтому форма не отображалась правильно при возникновении ошибки.

...