Rails FormTagHelper faltando métodos importantes de seleção e coleção_select
-
23-09-2019 - |
Pergunta
Você pode fazer isso quando usar form_for(@model...)
:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
E a saída é algo assim:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
Se você usar um formulário sem um modelo, você não tem aquele método auxiliar legal para criar o <option>
tags para você.Em vez disso, você deve fazer o seguinte:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormHelper e FormOptionsHelper trabalhar juntos em um formulário envolvendo um modelo, e eles têm o select
e collection_select
para tornar a vida mais fácil.Para uma planície form_tag
(sem modelo), entretanto, não existe tal FormOptionsTagHelper. FormTagHelper tem um select_tag
método, mas você tem que escrever manualmente as opções, o que é um desperdício.Parece que isso foi corrigido em algum lugar.
Eu poderia escrever meu próprio ajudante para me livrar de escrever essas tags de opção manualmente, mas é isso que FormOptionsHelper#collection_select
faz...Existe um equivalente para formulários sem modelos?
Solução
selecione e coleção_selecionar pode ser chamado sem um modelo.Normalmente uso uma combinação de duas palavras significativas e uma matriz de pares [rótulo, valor] para selecionar.A única desvantagem é ter que usar o formato abc[xyz].
Você tentou usar opções_para_selecionar?
select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")