ユーザーがチェックを外さない限り、フォームのチェックボックスのデフォルト値を設定しようとしています。通常、チェックボックスで :checked 属性を true に設定するだけで済みます
f.check_box :send_emails, :checked => true
ただし、フォームの検証が失敗し、ユーザーがボックスのチェックを外した場合は、「新しい」アクションが再レンダリングされるときに再度チェックされます。再レンダリングが発生したときにユーザーオブジェクトの値が実際に false であっても、「checked」属性を true に設定しているため、その値は無視されます。
これを回避するために、これを新しいアクションのコントローラーに入れました
@user.send_emails ||= true
見た目が悪いので、違いのアプローチを探しています。何か違うものを思いついた人はいますか?