Pergunta

No formulário que nós projetamos, temos um campo "States", que permite que seus usuários para selecionar vários estados ao mesmo tempo. Há um campo "Cidade", que deve ser preenchido de acordo com a seleção no campo "Estado". Os valores no campo "Cidade" são corretamente preenchidas se apenas um estado é selecionado. No entanto, ele não está mostrando corretamente quando vários estados são selecionadas.

Por favor sugerir uma solução Ruby para o mesmo.

Foi útil?

Solução

O problema é a expressão :with em sua observe_field. document.getElementById('usa_states_').value só retornará um valor único e nem todos os valores selecionados.

Eu não tenho certeza se há uma maneira de lidar com isso automaticamente em Rails, mas uma solução é escrever uma função JavaScript que irá construir uma string de todos os valores selecionados, separados por vírgulas. por exemplo.

function selectedValuesAsString(multiselect) {
    selectedValues = new Array();
    for (i = 0; i < multiselect.length; i++) {
        if (multiselect[i].selected) {
            selectedValues.push(multiselect[i].value);
        }
    }
    return selectedValues.join();
}

e, em seguida, atualizar o :with ser algo como:

:with => "'state='+selectedValuesAsString(document.getElementById('usa_states_')"

e, finalmente, dividir os valores dentro de sua ação do controlador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top