Я пытаюсь отобразить один из моих партикулов в вспомогательной функции, расположенной в моем контроллере.Rails Render Partial in Helper
Первая проблема, с которой я столкнулся, заключалась в том, что помощник возвращал каждый цикл вместо результата цикла. Чтобы исправить это, я попытался вернуть строку, содержащую результаты цикла.
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
Вызывается в View с <%= display_replies(reply) %>
Когда я смотрю на мой взгляд, то, что возвращается и отображается в HTML, однако он бежал и, таким образом, простой текст, это выглядит примерно так:
["<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"]
Я просто хотел бы, чтобы это был обычный неэкранированный HTML. Я где-то читал, что добавление html_safe исправит это, но, увы, этого не произошло.
Куда пойти отсюда?
Как мета-ответ, это не то, как вы должны использовать помощника. Помощник не должен знать базовые шаблоны или данные, которые он использует. Вы должны использовать частичную часть, чтобы перебирать ответы и использовать 'render partial:' в ваших шаблонах. –
Мне нужно, чтобы это была рекурсия, и я не думаю, что могу получить это с помощью блоков? Мне нужна функция, чтобы позвонить себе, чтобы узнать, имеет ли ответ какой-либо ответ, и ответ на этот ответ и т. Д.? Можно ли это сделать с частичным? – Melbourne2991