[RAILS] Erreur de syntaxe lors de l'inclusion de balises HTML dans Draper + create.js.erb

Rails 5.2.3 ruby 2.6.6

J'ai écrit une solution parce que je ne pouvais pas dessiner un décorateur contenant des balises HTML dans * .js.erb.

Solutions

JQuery dans create.js.erb utilise des guillemets simples.

javascript:create.js.erb


// OK
$("#tag").html('<%= @model.start_btn %>')

// NG
$("#tag").html("<%= @model.start_btn %>")

Cause

Les guillemets doubles ne sont pas échappés.

L'erreur suivante.

missing ) after argument list


    at processResponse (rails-ujs.source.js:272)
    at rails-ujs.source.js:200
    at XMLHttpRequest.xhr.onreadystatechange (rails-ujs.source.js:255)

Si vous cochez la dernière ligne de la console,

> xhr.response

"$("#ajax-response-message").html("")
$("#ajax-response-message").removeClass().addClass("alert alert-info")
$("#ajax-response-message").html("Message d'erreur")

$("#btn-area").html("<button type="submit" class="btn btn-danger" id="start"><i class="fas fa-check-circle"></i> <span>début</span></button>")"
↑↑↑ Pas échappé! !!

Conclusion

Ce n'est pas une bonne idée de supposer qu'il a été échappé.

Recommended Posts

Erreur de syntaxe lors de l'inclusion de balises HTML dans Draper + create.js.erb
Erreur lors de l'installation de l'ensemble lors de l'exécution de rails neufs
[Rails] Solution lorsqu'une erreur de migration se produit dans agit-as-taggable-on