ruby-on-rails - Rails 在 Helper 中渲染部分

标签 ruby-on-rails ruby ruby-on-rails-3.2

我一直在尝试在位于我的 Controller 内的辅助函数中渲染我的一个部分。

我遇到的第一个问题是助手返回的是 each 循环而不是循环的结果。为了解决这个问题,我试图让它返回一个包含循环结果的字符串。

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) %>

当我查看我的 View 时,返回和显示的是 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 可以解决这个问题,但遗憾的是它没有。

从这里到哪里去?

最佳答案

其实html_safe应该这样使用:-

<%= display_replies(reply).html_safe %>

关于ruby-on-rails - Rails 在 Helper 中渲染部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18780752/

相关文章:

ruby-on-rails - 如何使用 RSpec 测试 Gibbon?

ruby-on-rails - 在为 unicorn rails 服务器提供服务的同时,如何让 nginx 从两个位置提供静态文件?

ruby - 将 Redis 与 Postgresql 同步

html - 在 ActionView::Base.full_sanitizer 中允许 CDATA

ruby-on-rails - 设置caches_action,:expires_in => dynamically

ruby-on-rails - Rails - 从另一个模型中创建一个模型的实例

ruby-on-rails - 在 Ruby 中开始/结束/同时

ruby - 无法安装libsqlite3-dev(rvm要求)

heroku - 在 Heroku 数据库中存储图像的最简单方法?

ruby-on-rails - Ruby on Rails : How to use scope named 'open' ?