J'ai un partiel qui insère dans mes formulaires l'entrée appropriée en fonction du type d'attribut du modèle. Je passe un tableau de noms d'attribut et mon partiel met un formulaire.text_field où l'attribut est une chaîne, un form.select quand l'attribut est un entier (j'ai aussi un moyen de trouver la collection de valeurs de texte associées à un attribut) et ainsi de suite avec datetime, ect. Le problème est que le besoin partiel d'être aussi générique que possible, donc je veux vérifier si j'ai un params [: search] [: attr_name] pour définir la valeur par défaut, et si un ne l'ai pas, J'utilise l'appel par défaut, qui définit la valeur du modèle dans le formulaire.Transmet une option à une méthode uniquement si une condition est vraie. Élégant?
Bien sûr, je peux faire somethig comme ça (j'utilise HAML) fonctionne:
- if search_param(field)
= form.text_field field, :value => search_param(field)
- else
= form.text_field field
mais il est vraiment moche. Il n'y a aucun moyen de transmettre une option à une méthode uniquement si une condition est vraie. Quelque chose comme ça.
= form.text_field field, (:value => search_param(field)) if search_param(field)
J'ai aussi essayé de le faire:
= form.text_field field, :value => search_param(field) || field.to_sym
mais il montre "champ" à l'intérieur de l'entrée
idées?
Ouais! Ça marche. N'a besoin que de quelques twaeks. Premièrement: obtenir le modèle de la forme. Deuxièmement: vérifiez si form.object n'est pas NIL, car si une utilisation partielle dans un field_for, form doesn a. = champ form.text_field,: valeur => (paramètre_recherche (champ) || (formulaire.objet.send (champ) si formulaire.objet)) – Cibernox