In Ihrem Formular sollte das Kontrollkästchen True zurückgeben, wenn Sie darauf klicken.
In dem Formular geben Sie nur, wenn das Kontrollkästchen aktiviert ist oder nicht:
<%= f.check_box :terms_of_service %> Accept Terms of Services
check_box(object_name, method, options = {}, checked_value = "1", unchecked_value = "0")
In Ihrem Controller speichern Sie genau das, was von der Form zurückgegeben:
#you whitelist the parameter together with all the other params you have
def user_params
params.require(:user).permit(:terms_of_services)
end
#You create your user as usual
def create
@user = User.new(user_params)
end
In Sie Migration, I würde eine Standardoption für: terms_of_services hinzufügen, um sie expliziter zu machen.
class AddTermsOfServicesToUser < ActiveRecord::Migration
def change
add_column :users, :terms_of_services, :boolean, default: false
end
end
EDIT
Wenn Sie Sie mit Bezug auf Dienstleistungen auf der Serverseite zu arbeiten, nicht über eine Spalte in Ihrem User-Modell erstellen, keine Möglichkeit haben. Sie können nur auf Ihrer Client-Seite mit terms_of_services arbeiten, wenn Sie möchten, ohne eine Spalte zu erstellen. Dies ist, wie Sie tun können, dass:
ein Kontrollkästchen erstellen, ohne die Rails check_box Helfer (denn es wäre ein Objekt benötigen, die Sie nicht haben, da Sie keine Spalte in der Datenbank haben)
<input type="checkbox" id="cbox1" value="accepted" onchange='enableSubmitTag(this)'>
<label for="cbox1">Accept Terms of Services</label>
Disable die Schaltfläche Absenden standardmäßig
Wenn sie das Kontrollkästchen für die Nutzungsbedingungen aktivieren, aktivieren Sie die Schaltfläche zum Absenden erneut.
Wenn Sie: terms_of_services in Ihrer Tabelle speichern, können Sie diese auch auf Ihrer Serverseite validieren. Sie können alle Javascript verwenden. Sie müssen nur das Kontrollkästchen ändern:
<%= f.check_box :terms_of_service, :onchange => 'enableSubmitTag(this)' %> Accept Terms of Services
Können Sie die Antwort für Schienen formatieren? –
Ich habe meine Antwort aktualisiert. Ich würde auch den Standardwert für: terms_of_services in Ihrem Schema auf false setzen. Auf diese Weise muss der Benutzer sie explizit auf "wahr" setzen. –
Ich weiß, wie man es benutzt, wenn ich als Spalte in meine Tabelle lege. Ich wollte prüfen, wie es möglich ist, es ohne zu versuchen. –