2016-06-22 6 views
0

Ich möchte ein neues pm_workload erstellen. Ich habe das folgende Code-SnippetRails: Zwei Werte für label_method (simple_form_for)

<%= f.input :project_id, :collection => PmProject.order('name'), :label_method => :name, :value_method => :id, :label => "Project", :include_blank => false %> 

Gibt es eine Option, zwei Werte zu verwenden für: label_method? z.B.
:label_method => :name << (PmProject.project_number)

+0

Sie brauchen label_method sollten concatenate Namens & project_number sein? – LHH

+0

Ja, das möchte ich ausprobieren, da ich manchmal den gleichen Projektnamen aber unterschiedliche Projektnummern habe –

Antwort

0

Es ist nicht möglich, Attribute oder Feldnamen innerhalb der Label-Methode zu haben. Aber ich habe eine alternative Lösung für Sie, um dieses Problem zu lösen.

Sie nehmen PmProject Sammlungen, So erstellen Sie jetzt eine Instanz-Level-Methode insdie PmProject-Modell wie unten. wie unten so

def name_of_method 
    "#{name} #{project_number}" 
end 

nun für die Verwendung des gleichen auf der Sicht Eingang des einfachen Form zu verwenden ...

<%= f.input :project_id, :collection => PmProject.order('name'), :label_method => :name_of_method, :value_method => :id, :label => "Project", :include_blank => false %> 
+0

Danke für deine schnelle Antwort. Ich habe Ihre Lösung versucht, aber ich bekomme diese Fehlermeldung: undefined Methode 'Name_der_Methode 'für #

+0

Oh Gott, ich bin so dumm ... Du hast völlig Recht. Dies ist der richtige Weg, um mein Problem zu lösen. Vielen Dank. Ich habe den Fehler gemacht und setzen Sie den Def name_of_method ... in den Controller nicht im Modell –

+0

Schreiben Sie es nicht in den privaten Block, und versuchen Sie, die gleiche Methode Arbeit in der Konsole auf dem Pmpobject zu bekommen. –