Rails视图渲染异常:遍历集合后出现多余内容如何修复?
解决Rails视图遍历后出现多余内容的问题
嗨,这个问题其实是Slim(你用的应该是Slim模板吧?)语法里的常见小坑!
问题原因
你视图里写的= @games.each do |g|,这里的=符号在Slim中会输出Ruby表达式的返回值。而each方法遍历完成后,会返回它本身调用的集合(也就是@games),所以页面末尾就会额外输出这个集合的字符串形式(比如类似#<ActiveRecord::Relation [...]>的内容),这就是你看到的多余内容。
修复方法
把循环开头的=改成-就好啦!-在Slim里是用来执行Ruby代码但不输出任何结果的,这样循环只会渲染每一项的内容,不会把集合本身输出出来:
修改后的视图代码:
- @games.each do |g| .well %h2= link_to g.name, game_path(g) = link_to (image_tag g.image.url(:medium), class: 'img-responsive'), game_path(g)
你的action代码是没问题的,不需要改动~
内容的提问来源于stack exchange,提问作者Val-Lee
相关产品推荐
相关产品推荐

