1

ユーザーがチェックを外さない限り、フォームのチェックボックスのデフォルト値を設定しようとしています。通常、チェックボックスで :checked 属性を true に設定するだけで済みます

f.check_box :send_emails, :checked => true

ただし、フォームの検証が失敗し、ユーザーがボックスのチェックを外した場合は、「新しい」アクションが再レンダリングされるときに再度チェックされます。再レンダリングが発生したときにユーザーオブジェクトの値が実際に false であっても、「checked」属性を true に設定しているため、その値は無視されます。

これを回避するために、これを新しいアクションのコントローラーに入れました @user.send_emails ||= true

見た目が悪いので、違いのアプローチを探しています。何か違うものを思いついた人はいますか?

4

1 に答える 1

1

移行でのデフォルト値を設定でき:send_emailsますtrue

フィールドのデフォルト値を変更する移行を作成する例を次に示します。

class AddDefaultTrueToSendEmails < ActiveRecord::Migration
  def change
    change_column_default(:users, :send_emails, true)
  end
end
于 2012-07-03T18:14:25.257 に答える