Rails 3: F. select-options pour select
j'ai un formulaire sur mon Rubis sur Rails3 Application avec un menu déroulant, c'est mon code actuel pour l'option sélectionner:
<%= f.select :phone_type, options_for_select(["Select One", "Cell", "Work", "Office", "Home", "Other"],:disabled => ["Select One"]), :class => 'genForm_dropBox' %>
d'après ce que j'ai compris cela devrait avoir "Select One" comme option par défaut quand quelqu'un ouvre la page, mais s'ils ne sélectionnent pas l'une des autres options une erreur s'affiche quand ils frappent soumettre.
Ceci est vrai dans les navigateurs comme Safari et Chrome et IE7, mais dans Firefox et IE8 il montre "Cell" comme la première option que Select One est désactivée.
je voudrais afficher ", Sélectionnez l'Un" par défaut, mais l'avoir comme inutilisable option lorsqu'ils soumettent le formulaire. Est-ce que je dois le script dans le controller, ou le model? ou est-ce que j'ai mal codé dans la forme?
6 réponses
pour ceux qui cherchent à intégrer cette fonctionnalité, j'ai adopté une nouvelle approche à partir du modèle end of things. Que tous les champs doivent être remplis pour que l'utilisateur de soumettre et de ne pas recevoir une alerte d'erreur, j'ai donné le "Soumettre Une" option par défaut la valeur de rien. Vous pouvez regarder le code suivant pour voir comment j'ai fait ça.
<%= f.select :phone_type, options_for_select([["Select One", ""], "Cell", "Work", "Office", "Home", "Other"]), :class => 'genForm_dropBox' %>
C'est un peu plus propre:
<%= f.select :phone_type, [ 'Cell', 'Work', 'Office', 'Home', 'Other' ], :prompt => 'Select One' %>
l'argument: prompt génère une option avec une valeur vide.
Dans les Rails 4, cette approche fonctionne bien pour moi.
<%= f.select :status, options_for_status, {}, prompt: 'Select One' %>
en attendant j'ai défini les options dans un helper pour garder le désordre hors de ma vue.
def options_for_status
[
['First Option','first_option'],
['Second Option','second_option']
]
end
merci à tous ceux qui ont répondu.
j'avais besoin d'un code similaire pour un projet sur lequel je travaille et j'ai vraiment aimé L'approche de Ryan Burnette.
C'est ce qui a fonctionné pour moi avec les Rails 4.1.0.
<%= f.select :season, options_for_seasons, :prompt => 'Select One' %>
puis j'ai défini les options dans mon helper.
def options_for_seasons
['Spring', 'Summer', 'Autumn', 'Winter']
end
je suis allé avec:prompt => 'Select One'
parce que je voulais seulement que l'option "Select One" soit listée dans le formulaire d'édition si une saison n'avait pas été préalablement sélectionnée.
en ajoutant le ["Select One",""] provoque l'écran d'édition d'afficher toujours" Select One " plutôt que la valeur stockée. Rails 3.1 (2012 Août 17)
peut être <%= f.select :phone_type, options_for_select(["Cell", "Work", "Office", "Home", "Other"]), :prompt => "Select One", :class => 'genForm_dropBox' %>