ERB não é executado em scripts javascript
-
27-09-2019 - |
Pergunta
Eu tenho uma entrada selecionada na minha página.esta entrada selecionada exibe/oculta campos no formulário.Tudo isso funciona bem.Mas o problema é que se eu enviar o formulário e faltarem alguns campos necessários, ele não definirá a seleção com o valor correto posteriormente.Eu simplesmente não consigo fazer o Ruby incorporado funcionar!ele continua escapando de tudo...aqui meu código:
$(document).ready(function() {
$("#profile_sex").val('<%= @profile.sex %>')
$("#profile_sex").change(function(){
($(this).val() == "Frau") ? $('#form-female').show() : $('#form-female').hide();
($(this).val() == "Mann") ? $('#form-male').show() : $('#form-male').hide();
if ($(this).val() == "Paar") {
$('#form-female').show();
$('#form-male').show();
}
});
});
por que isso não funciona???Eu não recebo nenhum erro ou qualquer coisa, ele apenas define o valor para "<%= @perfil.sex =>" Eu estava pesquisando no Google e pesquisando no transbordamento da pilha e nos scasts ferroviários, a API do Rails, tudo.Estou seriamente confuso...
Obrigado pela ajuda.
Solução
Tente remover as marcas '<%= @profile.sex %>'
.
Se você precisar das marcas em torno do seu valor, tente ' + <%= @profile.sex %> + '
Outras dicas
Seu script JS não executa o código Ruby incorporado. Aqui está uma descrição de como resolver isso:
Você pode querer dar uma olhada jsvars.Estou usando-o em um de meus projetos e é muito bom.Você pode definir suas variáveis javascript diretamente no controlador, atribuindo a um hash:
jsvars[:profile_sex] = @profile.sex
então você poderia fazer $("#perfil_sexo").val(perfil_sexo); em seu roteiro.Isso pode resolver o seu problema e tornar as coisas mais bonitas ao mesmo tempo.
Apenas um pensamento!