首页 > 解决方案 > 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 情况:

请参阅错误后的表单示例

下拉列表不再是选择字段,因此看起来很难看,并且用户无法调整。

任何解决此问题的帮助将不胜感激。

标签: ruby-on-rails-5simple-form

解决方案


问题解决了。

当出现错误时,表单会重新呈现,但这是通过控制器中的“create”方法而不是新表单的“new”方法。

集合 @processors 和 @bank_accounts 可用于新方法,但不适用于 create 方法,这就是出现错误时表单无法正确呈现的原因。


推荐阅读