Rails Rendu auxiliaire partiel dans

J'ai essayé de visualiser l'un de mes partiels dans une fonction auxiliaire située à l'intérieur de mon contrôleur.

Le premier problème que j'ai rencontré était que l'assistant a renvoyé chaque cycle au lieu du résultat du cycle. Pour le réparer, j'ai essayé de le faire renvoyer la ligne contenant les résultats du cycle.


def display_replies/comment/
if comment.replies.count > 0
string = ""
comment.replies.each do |reply, index|
string = string + /render partial: "comment", locals: {index: index}/.to_s.html_safe
end
string
end


Causé en vue avec
<%= display_replies/reply/ %>


Quand je regarde mon propre type, ce qui est retourné et affiché, - c'est HTML, Cependant, il est blindé et, par conséquent, le texte habituel, il ressemble à ceci:


["<div class="c comment">\n<div class="profile">\n<img src="/assets/profile_image_sample.jpg"/>\n</div>\n<div class="message">\n<div class="username">Will Leach</div>\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus adipiscing purus et mi aliquet malesuada. Curabitur porttitor varius turpis eget sollicitudin. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut dapibus consectetur tortor, nec aliquet lacus tempus vitae. Sed felis massa, dapibus in arcu sit amet, rhoncus condimentum eros. Etiam rutrum lectus in malesuada aliquam. Mauris vitae diam vel felis accumsan vulputate vel nec tortor. Nunc pretium hendrerit est, ut cursus ipsum commodo sit amet.\n<div class="reply-link">\n<a href="#">Reply to Comment</a>\n</div>\n</div>\n</div>\n"]


Je voulais juste que ce soit l'habituel unescaped HTML. J'ai lu quelque part qui ajoute html_safe Cela le réparera, mais, hélas, cela ne s'est pas produit.

Où aller en partant d'ici?
Invité:

Denis

Confirmation de:

Réellement, html_safe Vous devez utiliser comme suit: -


<%= display_replies/reply/.html_safe %>

Cyprien

Confirmation de:

Réparer
\n

et
["

, Nous devons avoir
.join

Après le cycle. Comme ça:

Assistant:


def display_replies/comment/
if comment.replies.count > 0
raw/
comment.replies.map do |reply, index|
render 'comment', index: index
end.join
/
end
end


Voir:


<%= display_replies/reply/ %>


S'il vous plaît noter que j'ai tout supprimé
html_safe

et remplacé
raw

. Et au lieu de cycles
each

j'ai utilisé
map

, Par conséquent, nous n'avons pas besoin de créer une variable
string

Et renvoyez-le après le cycle.

J'espère que cela aidera!

Catherine

Confirmation de:

Vous pouvez utiliser la méthode html_safe de la manière suivante


<%= html_safe display_replies/reply/ %>

Pour répondre aux questions, connectez-vous ou registre