Rails ERB模板三元运算符报错,需生成Mark as Read链接
解决ERB模板三元运算符语法错误问题
问题原因
原代码触发语法错误是因为Ruby的运算符优先级问题:三元运算符?:的优先级高于方法调用,导致Ruby无法正确解析link_to的调用逻辑,把字符串参数错误地归到三元运算的分支里。
修复方案
方案1:用括号明确表达式优先级
给link_to调用加上括号,确保Ruby正确识别三元运算的两个分支:
<p>Status: <%= notification.read? ? "Read" : (link_to "Mark as Read", "/") %> </p>
方案2:拆分为多行if-else逻辑(可读性更强)
如果觉得三元运算符可读性差,也可以改成更直观的条件分支写法,完全避免优先级问题:
<p>Status: <% if notification.read? %> Read <% else %> <%= link_to "Mark as Read", "/" %> <% end %> </p>
两种方案都能实现需求:当notification.read?为true时显示“Read”,为false时显示可点击的“Mark as Read”链接。
内容的提问来源于stack exchange,提问作者Rahul Gupta
相关产品推荐
相关产品推荐

