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.

Patrick
la source

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

MBO
la source
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' }) %>
Paing Soe Thaw
la source
12

Ce travail pour moi

<%= f.select :status, [["Single", "single"], ["Married", "married"], ["Engaged", "engaged"], ["In a Relationship", "relationship"]], {}, {class: "form-control"} %>
Alex Onozor
la source
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}
ThienSuBS
la source
selected: @setfonctionne pour moi quand je l'ai mis dans le premier {}.
user1515295