2010-12-09 19 views
0

Dans mon modèle, je dis:Ruby on Rails par défaut Écrasement accesseurs

def dag 
    'test' 
end 

Mais quand je boucle tous les enregistrements et utilise

f.text_field :dag 

Je comprends toujours pas la valeur de "test" ... Je reçois la valeur de la base de données. Comment puis-je remplacer le getter par défaut pour les formulaires? Je travaille quand je dis

Model.dag # returns 'test' 

Répondre

1

Bien que votre exemple n'indique pas, avez-vous défini dag comme méthode de classe au lieu d'une méthode d'instance? Model.dag implique que c'est une méthode de classe qui n'est pas ce que vous voulez.

+0

Non. Je voulais dire "Model.first.dag". C'est une méthode d'instance. Je veux faire un remplacement pour f.text_field: dag, et quand je réponds: xml – Alexander

0

Si vous pouviez nous donner un peu plus de code, il serait plus utile de trouver la bonne réponse pour vous. Cela dit, je suppose que vous avez déclaré votre méthode dag comme méthode protégée ou privée. Jetez un coup d'oeil s'il y a un private (ou protected) keywork dessus de la déclaration de méthode dag sur le code du modèle: le cas échéant, la méthode est privée (ou protégé), il ne peut donc être accessible par votre modèle ...

0

la classe:

class DenLangeKamp < ActiveRecord::Base 
    belongs_to :liga, :class_name => "DenLangeLiga" 

    DAYS = { "Man" => 1, "Tir" => 2, "Ons" => 3, "Tor" => 4, "Fre" => 5, "Lør" => 6, "Søn" => 7 } 

    def dag 
    DAYS.invert[reader_attribute(:dag)] 
    end 

    def dag=(dag) 
    write_attribute(:dag, DAYS[dag]) 
    end 
end 

et la forme ressemble à ceci:

......... 
<% liga_form.fields_for :kampe do |kamp_form| %> 
    <tr> 
    <td><%= kamp_form.text_field :dag %></td> 
......... 

Je sauve le jour comme numéro dans le DB, donc je peux trier par le jour. "dag" est "day" en anglais. Quand je dis "DenLangeKamp.first.dag" je reçois le bon résultat (comme "Man", "Tir", etc) Mais dans la forme, je reçois le numéro à la place! Donc, il ne semble pas que cela "écrase" la méthode getter correctement.

0

J'ai le même problème. Les fonctions surchargées semblent fonctionner sur l'index et le show, mais dans l'édition le formulaire n'utilise pas la fonction surchargée. Il semble que ce soit en passant outre les fonctions surchargées.