Rails视图if分支执行但不输出内容,else分支正常
解决Rails视图if分支内容不输出问题
排查方向与解决步骤:
- 检查DOM渲染情况:按F12打开浏览器开发者工具,切换到Elements标签,搜索"It's a win!"。如果能找到该文本,说明内容已渲染,只是被CSS隐藏(比如颜色与背景色一致、
display:none等),调整对应样式即可。 - 改用ERB输出标签:直接写纯文本在ERB里理论上可行,但偶尔会因缓存或编码问题失效,把文本改成ERB输出形式:
<%= "It's a win!" %> - 清除视图缓存:在终端执行以下命令清除缓存,然后重启服务器:
rails tmp:cache:clear - 修正注释格式:HTML的合法注释是
<!-- 注释内容 -->,把你写的// This line is not being printed on execution换成标准HTML注释,避免干扰渲染流程。 - 确认对象有效性:在debugger里执行
puts game.winner.inspect,确认game.winner是正常存在的有效对象,排除因对象异常导致的渲染中断。
修改后的示例代码:
<% if game.finished? %> <center> <% if game.winner.present? %> <% debugger %> <%= "It's a win!" %> <% else %> It's a draw! <%= link_to 'Back', root_path %> <% end %> </center> <% end %>
内容的提问来源于stack exchange,提问作者Saif Siddique
相关产品推荐
相关产品推荐

