4

Ich verwende Formtastic, um ein Formular für ein Objekt eines Modells zu rendern, das eine HABTM-Beziehung zu einem anderen Modell hat.Ruby on Rails: Ändern des Kontrollkästchens in formtastic

Ich tue dies, um eine Liste von Kontrollkästchen zu machen:

<%= f.input :classes, :as => :check_boxes, :collection => UserClass.all %> 

Und ja, es macht alle Kontrollkästchen und auf der rechten Seite zeigt es den Objektnamen, so etwas wie dieses. Also habe ich etwas in der Art:

[x] #<UserClass:0x000000087e4958> 

Wie kann ich das ändern? Ich möchte den Klassennamen und die Beschreibung anzeigen ...

Vielen Dank.

Antwort

13

Verwenden Sie die Option :member_label:

<%= f.input :classes, :as => :check_boxes, 
    :collection => UserClass.all, :member_label => :name %> 

(Angenommen, Ihre Benutzerklasse hat ein name Attribut, zum Beispiel). Wenn Ihr Label aus mehreren Feldern stammt, können Sie einen Proc. Zum Beispiel (wenn Ihre Benutzerklasse first_name und last_name Attribute):

<%= f.input :classes, :as => :check_boxes, 
    :collection => UserClass.all, 
    :member_label => Proc.new { |u| "#{u.first_name} #{u.last_name}" } %> 

Die oben ist für Formtastic Version 2.x. Für den 1.2-stable-Zweig funktioniert es genauso (Sie können einen Methodennamen oder ein proc eingeben), aber die Option heißt :label_method. Beispiel:

<%= f.input :classes, :as => :check_boxes, 
    :collection => UserClass.all, :label_method => :name %> 
+0

Danke für die schnelle Antwort. Ich habe das versucht, und auch die: value_method, aber ich sehe immer noch die # . Irgendwelche Gedanken? –

+0

Ich verwende formtastic 1.2 übrigens ... –

+0

@HommerSmith, in 1.2 hieß die Option ': label_method'. Ich habe meine Antwort aktualisiert. –

-1

TRemove das Rendern vom Tag. Verwenden <% statt <% =

dank @HommerSmith für die Dinge in Bezug auf die Verwendung in älteren Versionen Clearing und wo das obige Beispiel zu verwenden.

+0

Wenn ich das = in <% entfernen wird es keine der Kontrollkästchen angezeigt ... –

+0

@HommerSmith, hat Galuga Recht. In Version 1.2 lässt man das '=' weg, das Rendern ist eingebaut. Aber siehe auch meine Antwort, wie man in 1.2 was macht. –

+0

Ich bin in 1.2 und es macht nicht die Eingaben, wenn ich das ausziehe ... –