ruby-on-rails-5 - rails 5 simple_form 错误后将输入类型从选择更改为字符串
问题描述
我有以下表格:
<%= 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 %>
处理器和处理器银行帐户的输入是“选择”字段,因此向用户显示为下拉列表。
但是,如果表单返回错误,这两个字段的表单类型将从“选择”更改为“字符串”,并显示所选字段的 ActiveRecord 情况:
下拉列表不再是选择字段,因此看起来很难看,并且用户无法调整。
任何解决此问题的帮助将不胜感激。
解决方案
问题解决了。
当出现错误时,表单会重新呈现,但这是通过控制器中的“create”方法而不是新表单的“new”方法。
集合 @processors 和 @bank_accounts 可用于新方法,但不适用于 create 方法,这就是出现错误时表单无法正确呈现的原因。