Ruby on Rails form_pour sélectionner un champ avec une classe


200

Je frappe ma tête contre le mur sur celui-ci. Je veux faire une simple balise de sélection en utilisant la f.selectbalise mais rien de ce que je fais ne fonctionne. Je mets un exemple ci-dessous:

<%= f.select(:object_field, ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 4'], :class => 'my_style_class')%>

Ok, donc en gros c'est une simple liste qui une fois le formulaire soumis il place la valeur dans le object_field. Tout cela fonctionne, mais en affichant la source de la page, la balise de classe n'est pas incluse. Il ne renvoie pas d'erreur, il saute tout simplement ensemble.

Si quelqu'un a des suggestions, je l'apprécierais grandement.

Réponses:


449

Essayez de cette façon:

<%= f.select(:object_field, ['Item 1', ...], {}, { :class => 'my_style_class' }) %>

selecthelper prend deux options de hachage, une pour select et la seconde pour les options html. Donc, tout ce dont vous avez besoin est de donner des options vides par défaut comme premier paramètre après la liste des éléments, puis d'ajouter votre classe à html_options.

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select


2
Droit sur l'argent, merci beaucoup, ça a fait l'affaire! Je savais que ça devait être quelque chose de simple et bien sûr que ça l'était.
Patrick

J'avais essayé de cette façon en haml mais je ne sais pas pourquoi dans la classe "Inspecter l'élément dans Firebug avec l'élément", on ne voit pas ici mon code = f.select (: gender, [['Male', true], ['Female ', false]], {}, {: class => "drop",: style => "opacity: 0;"})
Gagan Gami

@GaganGami Je l'ai fait fonctionner avec ce code: l' = f.select(:stars, [['Male', true], ['Female', false]], {}, {:class=>"form-control",:style=>"opacity: 0;"}) opacité définie sur 0 rendra votre champ invisible.
Robert

Est-ce que quelqu'un sait ce que nous devons faire si le f.select passe un bloc à la fin? La classe ne semble pas suivre toutes les combinaisons que j'ai essayées.
Tashows

Merci pour l'explication
Abhilash

21

Vous pouvez également ajouter une option d'invite comme celle-ci.

<%= f.select(:object_field, ['Item 1', 'Item 2'], {include_blank: "Select something"}, { :class => 'my_style_class' }) %>

12

Ce travail pour moi

<%= f.select :status, [["Single", "single"], ["Married", "married"], ["Engaged", "engaged"], ["In a Relationship", "relationship"]], {}, {class: "form-control"} %>

2

Vous pouvez voir ici: http://apidock.com/rails/ActionView/Helpers/FormBuilder/select

Ou ici: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

La balise Select a un agrégat maximal de 4, et le dernier agrément est une option html, cela signifie que vous pouvez mettre l'option class, require, selection ici.

= f.select :sms_category_id, @sms_category_collect, {}, {class: 'form-control', required: true, selected: @set}

selected: @setfonctionne pour moi quand je l'ai mis dans le premier {}.
user1515295
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.