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?

30
demandé sur animuson 2011-03-05 02:01:58

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' %>
30
répondu mediarts 2011-03-05 18:32:14

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.

20
répondu danblaker 2012-12-27 21:48:37

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
12
répondu rb- 2016-01-29 23:53:26

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.

3
répondu Paul Phillips 2014-04-23 07:28:04

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)

1
répondu user1585163 2012-08-17 19:53:49

peut être <%= f.select :phone_type, options_for_select(["Cell", "Work", "Office", "Home", "Other"]), :prompt => "Select One", :class => 'genForm_dropBox' %>

0
répondu roxdurazo 2015-11-13 20:32:37