Formulário Ruby on Rails para selecionar campo com classe

200

Eu estou batendo minha cabeça contra a parede nesta. Quero criar uma simples tag de seleção usando a f.selecttag, mas nada que eu faça funcione. Eu coloquei um exemplo abaixo:

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

Ok, então basicamente é uma lista simples que, uma vez enviado o formulário, coloca o valor no object_field. Tudo funciona, mas, ao visualizar a origem da página, a tag da classe não está incluída. Não gera um erro, apenas ignora tudo.

Se alguém tiver alguma sugestão eu agradeceria muito.

Patrick
fonte

Respostas:

449

Tente desta maneira:

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

selectO auxiliar usa dois hashes de opções, um para seleção e o segundo para opções de html. Então, tudo que você precisa é dar opções vazias padrão como primeiro parâmetro após a lista de itens e adicionar sua classe a html_options.

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

MBO
fonte
2
Bem no dinheiro, muito obrigado, que fez o truque! Eu sabia que tinha que ser algo simples e, claro, era.
Patrick
Eu tentei dessa maneira no haml, mas não sei por que na classe "Inspecionar elemento no firebug com elemento" não é vista aqui, é meu código = f.select (: gender, [['Male', true], ['Female ', false]], {}, {: class => "drop",: style => "opacity: 0;"})
Gagan Gami
@ GaganGami Eu consegui trabalhar com este código: a = f.select(:stars, [['Male', true], ['Female', false]], {}, {:class=>"form-control",:style=>"opacity: 0;"}) opacidade definida como 0 tornará seu campo invisível.
Robert
Alguém sabe o que devemos fazer se o f.select estiver passando por um bloco no final? A aula parece não passar por nenhuma combinação que eu tentei.
Tashows 23/08/16
Obrigado pela explicação
Abhilash
21

Você também pode adicionar uma opção de prompt como esta.

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

Esse trabalho pra mim

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

Você pode ver aqui: http://apidock.com/rails/ActionView/Helpers/FormBuilder/select

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

A tag Select tem no máximo 4 caracteres, e o último atributo é a opção html, significa que você pode colocar aqui a classe, a exigência, a opção de seleção.

= f.select :sms_category_id, @sms_category_collect, {}, {class: 'form-control', required: true, selected: @set}
ThienSuBS
fonte
selected: @setfunciona para mim quando o coloco no primeiro {}.
user1515295