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?

Foi útil?

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")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top