2016-08-28 1 views
0

Zusätzlich zur Anzeige der Herausforderung name. Ich möchte auch seine deadline neben der name zeigen.collection_select zeigt mehrere Objektattribute an?

Es wäre zum Beispiel wie folgt aussehen:

Visit London 09/09/16 
Make $1,000,000 10/15/18 
Knit a Scarf 01/11/19 

Statt nur dies:

enter image description here

<%= f.collection_select :challenge_id, current_user.challenges.order(:deadline),:id,:name, include_blank: true %> 

Antwort

1

Definieren Sie eine Methode name_with_deadline in challenge.rb

def name_with_deadline 
    "#{name} #{deadline}" 
end 

und dann diese Methode als Label in der Sammlung verwenden.

<%= f.collection_select :challenge_id, current_user.challenges.order(:deadline),:id, :name_with_deadline, include_blank: true %> 

Die name_with_deadline Methode wird für jedes Objekt in der Sammlung namens den Beschriftungstext abzurufen.

Hoffe, das hilft!

1

Sie können ein virtuelles Attribut hinzufügen Sie wie unter Modell:

def name_deadline 
"#{name} #{deadline}" 
end 

collection_select:

<%= f.collection_select :challenge_id, current_user.challenges.order(:deadline),:id,:name_deadline, include_blank: true %>