2016-04-15 21 views
2

Ich habe Informationen in meiner Schienenansicht, die ich nur anzeigen möchte, wenn der Benutzer alle persönlichen Daten in der Datenbank eingegeben hat, wie Name, Vorname, Straße und Stadt. Ich könnte das jetzt tun:Schienen überprüfen, ob ein Formular vollständig ausgefüllt wurde

aber ich denke nicht, dass das sehr elegant ist und "die Schienen Weg". Gibt es einen einfacheren und klügeren Weg, dies zu tun?

Antwort

3

Sie können required in Ihre HTML-Formular-Tags und Validierungen in Model Class verwenden. Auch Links folgen: http://guides.rubyonrails.org/active_record_validations.html http://www.w3schools.com/tags/att_input_required.asp

In Ihrem Modell

class User < ActiveRecord::Base 
    def has_required_fields? 
    self.name && self.first_name && self.address && .... 
    end 
end 

Und in Ihrem Controller

if user.has_required_fields? 
    # do whatever you want 
end 
+0

Nein, das ist nicht das, was ich tun möchte. Ich möchte Informationen unabhängig vom Formular filtern. – DonMB

+0

Ich habe Update-Antwort. überprüfen Sie es jetzt. –

0

Die "Schienen Weg" wäre dünn Controller, Fett-Modell. In Ihrem Fall sollten Sie also eine Methode in Ihrem User Modell erstellen und anschließend in Ihrem Controller verwenden.

User-Modell:

def incomplete? 
    name.blank? or firstname.blank? or street.blank? 
end 

Benutzer Controller:

unless user.incomplete? 
    # Show stuff 
end 
0

in Modell:

ALL_REQUIRED_FIELDS = %w(name surname address email) 

def filled_required_fields? 
    ALL_REQUIRED_FIELDS.all? { |field| self.attribute_present? field } 
end 

in Ihrem Controller:

@user.filled_required_fields? 

gibt true zurück, wenn alle Felder gefüllt sind und false, wenn nicht.

sieht sehr elegant :)

Verwandte Themen