2009-05-20 12 views
2

Je viens de mettre à jour vers Rails 2.3.2 à partir de Rails 2.1 et j'ai remarqué un problème concernant l'utilisation de l'option :disabled dans les champs de saisie.Utilisation correcte de: option désactivée pour text_field dans Rails 2.3?

Auparavant, nous utilisions cette option en tant que booléen. Nous indiquions donc si nous voulions ou non désactiver les champs en fonction d'une méthode sur l'objet, par ex.

f.text_field :amount, :disabled => @my_object.is_disabled?, :class => 'my_class' 

Cela fonctionne bien dans Rails 2.1 - si is_disabled? renvoie true, le champ de formulaire est désactivé, sinon ce n'est pas.

Dans Rails 2.3, cependant, ce n'est pas le cas. Le champ de formulaire est désactivé indépendamment de la valeur de :disabled.

Est-ce que cela signifie que je vais devoir mettre une déclaration if autour de ma déclaration f.text_field tels que:

<% if @my_object.is_disabled? %> 
    <%= f.text_field :amount, :disabled => 'disabled', :class => 'my_class' %> 
<% else %> 
    <%= f.text_field :amount, :class => 'my_class' %> 
<% end %> 

Certes, je manque quelque chose ici?

Répondre

4

Veuillez ignorer ce fil. Le problème que j'avais était en fait avec Javascript.

Ajout: disabled => false ajoute "disabled = ''" au champ de formulaire qui correctement ne pas désactiver le champ de formulaire après tout.

6

Ils se sont débarrassés de is_boolean_field? dans les rails 2.3. C'est juste boolean_field? à présent.

donc:

f.text_field :amount, :disabled => @my_object.disabled?, :class => 'my_class' 

devrait fonctionner correctement.

+0

Je ne comprends pas cela. Dans mon exemple ci-dessus, @ my_object.is_disabled? est en fait ma propre méthode personnalisée sur un objet. Le nom de la méthode actuelle est "def is_locked?". – Olly

+0

avez-vous essayé de faire: disabled => false or: disabled => true pour voir si elle est désactivée et désactivée sur votre champ text_field. Je ne sais pas pourquoi cela ne fonctionnerait pas si votre is_disabled? La méthode retourne booléen. –

+0

Corban - oui, ma méthode renvoie un booléen. Si j'ajoute l'explicite ": disabled => false" alors j'ai le même effet. Rails ajoute ce code au code HTML: disabled = "". Je suppose qu'il ne devrait rien ajouter si la valeur de: disabled est false. – Olly

Questions connexes