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.