2017-05-29 4 views
1

Basierend auf this Frage: Ich habe einen Controller erstellt:Rails-Feed aus mehreren Modellen

@activities = (@plays + @wants).sort_by {|a| a.created_at}.reverse 

und eine Ansicht:

- @plays.each do |play| 
    You played #{play.game.name} 

jedoch nicht angezeigt werden können: undefined method 'play' for #Want:0x007f39ab8e99e0

Wie Kann ich auf verschiedene Felder jedes abhängigen Modells und deren Namen zugreifen? Like:

- @activities.each do |activity| 
    - if activity.model_name = Play 
    You played #{activity.model.name} 
    - else  
    You want #{play.want.name} 

Antwort

2

Was Sie tun mit if activity.model_name = Play ist ein Stelldichein, können Sie das gleiche tun == mit der Klasse von einem solchen Objekt zu vergleichen und das Attribut entsprechend dem Objekt aus dieser bestimmten Klasse zu wählen.

Sie verwenden die Variable activity die Objekte innerhalb @activities zu beziehen, ja, ist play nicht innerhalb des each Block vorhanden sind.

Sie könnten versuchen, mit:

- @activities.each do |activity| 
    - if activity.class == Play 
    You played #{activity.attribute_for_a_play_object} 
    - else  
    You want #{activity.attribute_for_a_non_play_object} 
Verwandte Themen