10
votes

Le modèle JSON ERB ne peut pas trouver d'autres partiels HTML

J'essaie d'avoir une réponse JSON dans laquelle une valeur est bloquée par un fichier html par un xxx pré>

mais je reçois l'erreur suivante: p>

  disclaimer = {
     "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
  }


0 commentaires

4 Réponses :


0
votes

Je ne suis pas sûr que je vous ai bien compris, mais peut-être que vous pouvez jouer avec le type de contenu comme celui-ci:

disclaimer = {
  "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer', :content_type => 'text/html'), :locals => {:localVariable => @localVariable} %>"
}


1 commentaires

Non Non, je pense que vous êtes juste sur l'argent: les rails sont invités à servir JSON, alors tout ce qu'il sert, y compris les rendus devront être JSON et non html.erb. Donc, lorsque je demande un partial.html.erb à l'intérieur de la réponse, il jette une erreur disant que partital.json.erb introuvable. Chose étrange est, si je demande .js (JSONP?) Dans l'en-tête, ce qui signifie que les rails devraient servir toutes partielles dans .js.erb se terminant, mais cette fois, cela ne serait pas dérangeant servir .html.erb et ne dira pas Ce n'est pas trouvé. C'est une incohérence dans mon opinion ... mais après avoir ajouté le: content_type => 'Texte / html', il jette toujours cette même erreur



13
votes

obtenu: tout un besoin est cette ligne dans le fichier .json.erb <% autoformats = ["html"]%>

donc l'index complet.json.erb xxx


2 commentaires

Cette approche fonctionne également de l'intérieur d'un contrôleur qui rendu JSON; Je définis self.formats = [: html] , puis rendu_to_string (: partielle => 'an_html_parttiale',: locaux => {: tout ce que oui}) , et Ensuite, je peux rendre Json Fine.


Si vous avez également d'autres partiels JSON, vous voudrez peut-être faire self.formats + = [: html] à la place.



5
votes

Ma réponse est similaire à celle de Nik ci-dessus. J'ai l'aide suivante pour les modèles JSON.ERB:

{
  "html": <%=json render_html(:partial => 'some_partial') %>,
  "status": success
}


0 commentaires

2
votes

Pour les futurs lecteurs, vous pouvez transmettre des formats paramètres comme celui-ci.

= render partial: 'user', locals: {xyz: @xyz}, :formats => [:html]


0 commentaires