2009-05-17 7 views
2

Mon modèle "combobox" has_many "comboboxselects" et "comboboxselects" belongs_to "combobox". Activescaffold de "comboboxes" affiche des données dans la colonne comboboxselects comme "#<Comboboxselect:0x472d25c>". Comment faire afficher la colonne "réponse" de la table "comboxselects"?ActiveScaffold - modification du nom par défaut de l'objet associé

Modèles:

class Combobox < ActiveRecord::Base 
has_many :comboboxselects 
end 

class Comboboxselect < ActiveRecord::Base 
belongs_to :combobox 
end 

Schéma:

create_table "comboboxes", :force => true do |t| 
    t.string "question" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "comboboxselects", :force => true do |t| 
    t.integer "combobox_id" 
    t.string "answer" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

Sortie:

class ComboboxesController < ApplicationController 
active_scaffold :combobox do |config| 
    config.list.columns = [:id, :question] 
    config.columns = [:question, :comboboxselects] 
end 
end 

class ComboboxselectsController < ApplicationController 
active_scaffold :comboboxselect do |config| 
    config.list.columns = [:id, :combobox, :answer] 
    config.columns = [:answer] 
end 
end 
+0

fichiers de modèle pour ces deux modèles, et leurs schémas, s'il vous plaît. – apostlion

+0

Je l'ai ajouté, vous pouvez le voir maintenant. Merci pour intéressant. – kubum

Répondre

1

D'abord, tous les champs référencés dans config.list.columns doivent être inclus dans config.columns (tous les champs de config. *. Columns explicitement définis doivent être des sous-ensembles de config.columns).

Ensuite, dans chaque modèle qui ne possède pas déjà un champ de nom ou d'un titre ou d'une méthode, vous devez déclarer cette méthode personnalisée:

class Comboboxselect < ActiveRecord::Base 
belongs_to :combobox 
def to_label 
    "#{answer}" 
end 
end 

Voir la documentation ActiveScaffold: Describing Records: to_label

0

Quand vous dites affiche, je suppose que vous voulez dire dans une vue? Pouvez-vous poster le code de votre course pour obtenir cette sortie.

Il me semble que vous avez juste objet Comboboxselect, avez-vous essayé d'ajouter .answer pour accéder à l'attribut que vous voulez?

+0

Oui, dans une vue par défaut activescaffold. J'ai ajouté la config de chargement par défaut activescaffold. Hm .. Vous avez raison, et je ne sais pas comment générer la réponse. – kubum