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.

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


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' }) %>

12

Esse trabalho pra mim

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

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}

selected: @setfunciona para mim quando o coloco no primeiro {}.
— user1515295
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.