2017-08-21 3 views
0

Je travaille avec Ruby on Rails, JavaScript et Simple Form et j'ai un problème pour ajouter du code Ruby dans une fonction en JavaScript.Ajouter du code Ruby dans le code JavaScript

Mon code source est:

$('#add_taxo').on('click',function() { 
    document.getElementById('okok').innerHTML += '<li class="list-group-item"> <%= taxonomies_select_tag('statistic[taxonomy]', Folders::Taxonomy, Folders::Taxonomy::TAXONOMY_KEY, level: 3, path: 'folders/taxonomies', include_blank: true, class: 'required form-control test_taxo')%> </li>'; 
    alert("lklk"); 
}); 

Ce code ne fonctionne pas.

Répondre

0

Essayez échapper le javascript dans le code rubis, comme ceci:

document.getElementById('okok').innerHTML += '<li class="list-group-item"> <%= j(taxonomies_select_tag('statistic[taxonomy]', Folders::Taxonomy, Folders::Taxonomy::TAXONOMY_KEY, level: 3, path: 'folders/taxonomies', include_blank: true, class: 'required form-control test_taxo'))%> </li>'; 

Vous pouvez utiliser escape_javascript(...) ou j(...) (comme dans l'exemple).

+0

cela ne fonctionne pas –

+0

@youssefhassoun Avez-vous des erreurs sur les journaux du serveur ou sur la console du navigateur? – Gerry

+0

oui j'ai une erreur sur le navigateur dans cette ligne –

0

assurez-vous que l'extension est .js.erb et qu'elle fait partie du dossier des vues.

Si vous souhaitez le faire par le biais de js simples, passez ces variables par html, par exemple: champs cachés, propriétés de l'étiquette html.

1

Vous ne pouvez utiliser le code ruby ​​qu'à travers les fichiers view/* .js/coffee.erb via ajax. Vous ne pouvez pas utiliser ruby ​​dans les fichiers js/coffeescript. Si vous devez transmettre des données du contrôleur au côté js, passez-les à travers des balises de champ masquées dans votre vue via les attributs de données.

+0

Dupliquer de https://stackoverflow.com/questions/45806146/add-ruby-code-into-javascript-code/45808043#45808043 –

+0

Ce code n'est pas en double. Cet exemple n'explique pas que le code en contexte, doit être géré via une réponse ajax dans les 'views/* js.erb', et non les assets. – Kao