web-dev-qa-db-ja.com

Rails Simple_form

私は Simple_Form with Rails 3を使用しています。それは素晴らしいことです。簡単な質問があります。タイプがの場合、f.input裏側のブール値ですが、trueに事前選択しておく必要があります。

ビューを介してこれを行う方法はありますか?

27
Drew

最良の方法は、次のようなモデルのデフォルト値を設定することです

create_table :my_table do |t|
  ...
  t.boolean :my_boolean, :default => true
  ...
end

どのsimple_formがオンになり、デフォルトでチェックボックスがオンになるように設定します。

より簡単な方法は、Daveが言うようにそれを実行し、値を1に強制するだけですが、検証が失敗し、フォームを再度表示すると、フォームが送信されたときの外観に関係なく、フォームは引き続きチェックされます。

16
PerfectlyNormal

移行したくない場合、または 'PerfectlyNormal'の回答を実行するように移行を更新できない場合は、f.inputの末尾に次を追加できます。

:input_html => { :checked => true }

したがって、次のようになります。

= f.input :some_flag, :input_html => { :checked => true }

お役に立てば幸いです。

97
Gav

1つのチェックボックスのみをチェックする"None"の値を持つ私にとってはうまくいきました

<%= f.input :notify, label: "Notification", as: :check_boxes, collection: ["None", "Daily", "Weekly", "Monthly", "Quarterly", "Yearly"], :item_wrapper_class => 'inline', :checked => ["None", true] %>
8
anusha

私はこの投稿を偶然見つけましたが、うまくいったのは最新の回答に似ていますが、短くなっています。希望の設定でオブジェクトを初期化するだけです:

def new
  Object.new(my_boolean: true)
end
3
Michael Fehr

これはうまくいくはずです:

= f.input :some_flag, :input_html => { :value => '1' }
2
Dave Rapin

私の意見では、これを行うための方法は、コントローラーの属性の値を設定することです。

@ some_object.some_flag = 1

2
ndemoreau