You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails辅助方法使用gsub时出现空值表达式问题求助

解决Ruby中"void value expression"错误的方案

嘿,你这是不小心踩了Ruby关键字的坑啦!问题的核心在于你把方法命名成了break——这是Ruby内置的控制流关键字(用来跳出循环或代码块的),Ruby会把它当成控制语句而非自定义方法,直接导致了"void value expression"这个错误。

具体修复步骤:

  1. 给方法换个合法名字
    把方法名改成非关键字的名称,比如format_hours或者split_hours,彻底避免和Ruby内置语法冲突。

  2. 简化冗余的逻辑判断
    你方法里的nil检查其实没必要:string.to_s会自动把nil转换成空字符串,而gsub在空字符串上调用也能正常返回结果,完全不需要额外的分支处理。

修改后的辅助方法代码:

def format_hours(string)
  string.to_s.gsub(/(?<=\) )/, "\n")
end
  1. 更新视图中的调用代码
    把ERB里的方法调用换成新的名字:
<% @region.locations.each do |location| %>
  <%= format_hours(location.hours_operation) %>
<% end %>

额外小优化

如果是在HTML页面中显示,纯文本的换行不会生效,你可以把换行换成HTML的<br>标签,记得加上.html_safe告诉Rails这是安全的HTML内容:

def format_hours(string)
  string.to_s.gsub(/(?<=\) )/, "<br>").html_safe
end

这样调整后,你的营业时间会在每个) 后面自动换行,同时那个烦人的"void value expression"错误也会消失啦!

内容的提问来源于stack exchange,提问作者Jake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:03:01