web-dev-qa-db-ja.com

simple_formを使用した入力のデフォルト値

入力のデフォルト値をしようとしています

大丈夫:

<%= f.input_field :quantity, default: '1' %> 

しかし、私はf.input_fieldではなくf.inputが必要です

<%= f.input :quantity %> 


  • 標準のhtml値で試してみます-ただし、検証成功が不十分な場合は1で上書きされます-望ましくない

    <%= f.input :quantity, input_html: {value: '1'} %>
    
  • 値を削除して検証が成功しなかった場合、すべての数量が読み込まれます-すべては大丈夫です

    <%= f.input :quantity %>
    

これを解決する方法は?f.input_fieldのような代替があります-:デフォルト?または値?を持つ他のソリューションがありますか?

55
patie

次のようなものを試すことができます:

<%= f.input :quantity, input_html: {value: f.object.quantity || '1'} %>
134
Oleg Haidul

Simple_formのselectedオプションを使用できます:<%= f.input :quantity, selected: f.object.quantity || '1' %>

3
Stefan Lyew

できるよ

<%= f.input :quantity, value: f.object.quantity || '1' %>

最近では、input_htmlキー。

1
emptywalls

これを試して:

= f.input : quantity, input_html: { value: (f.object.quantity.present?) ? f.object.quantity : '1' }
1
Kiry Meas

これは古い質問です...しかし、提供された答えはどれも私には受け入れられないようです。これを行う最良の方法は、コントローラーの新しいアクションに値を設定することです。

 def new
   WizBang.new(quantity: 1)

これにより、オブジェクトの数量キーが新しいアクションの値1に割り当てられます。編集アクションは、オブジェクトの持続値、または検証が失敗してフォームが再ロードされた場合はparams値に依存する必要があります。他の回答では、ユーザーが最初にnilを保存した場合でも(nilを許可している場合)、編集時に数量が1になります。よくない。私はnilを許可しませんが、数量フィールドに0オプションを含めます。

f.input :quantity, collection (0..100)

ずっときれい。

0
hellion