简体   繁体   English

Rails - 在helper方法中使用gsub时的void值表达式

[英]Rails - void value expression when using gsub in helper method

I have the following data that I'm trying to apply a gsub to: 我有以下数据,我正在尝试将gsub应用于:

7:30 AM - 5:00 PM (M-F) 7:30 AM - 12 PM (Sat)

I'm displaying it like the following: 我正在显示如下:

<% @region.locations.each do |location | %>
 <%= location.hours_operation %>
<% end %>

I dediced to use a helper to apply the gsub so I went to my region helper file and added the following: 我专门使用帮助器来应用gsub,所以我去了我的区域帮助文件并添加了以下内容:

def break(string)
 initial1 = string
 result1 = string.to_s.gsub(/(?<=\) )/, "\n")
 if result1.nil?
   initial1
 else
   result1
 end
end

Then I changed my view to: 然后我改变了观点:

<% @region.locations.each do |location | %>
 <%= break(location.hours_operation) %>
<% end %>

I end up getting an error on the method line saying: 我最终在方法行上收到错误说:

void value expression ak(location.hours_operation)))).to_s)); ^

Did I do something wrong in my helper or is there a simpler way to apply the gsub? 我在帮助器中做错了什么,或者是否有更简单的方法来应用gsub?

break is a reserved keyword in Ruby, defined in its implementation, you can take a look to this file among the others: break是Ruby中的保留关键字,在其实现中定义,您可以在其他文件中查看此文件

struct kwtable;
%%
__ENCODING__, {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END
__LINE__, {keyword__LINE__, keyword__LINE__}, EXPR_END
__FILE__, {keyword__FILE__, keyword__FILE__}, EXPR_END
BEGIN, {keyword_BEGIN, keyword_BEGIN}, EXPR_END
END, {keyword_END, keyword_END}, EXPR_END
alias, {keyword_alias, keyword_alias}, EXPR_FNAME|EXPR_FITEM
and, {keyword_and, keyword_and}, EXPR_VALUE
begin, {keyword_begin, keyword_begin}, EXPR_BEG
break, {keyword_break, keyword_break}, EXPR_MID
case, {keyword_case, keyword_case}, EXPR_VALUE
class, {keyword_class, keyword_class}, EXPR_CLASS
def, {keyword_def, keyword_def}, EXPR_FNAME
defined?, {keyword_defined, keyword_defined}, EXPR_ARG
do, {keyword_do, keyword_do}, EXPR_BEG
else, {keyword_else, keyword_else}, EXPR_BEG
elsif, {keyword_elsif, keyword_elsif}, EXPR_VALUE
end, {keyword_end, keyword_end}, EXPR_END
ensure, {keyword_ensure, keyword_ensure}, EXPR_BEG
false, {keyword_false, keyword_false}, EXPR_END
for, {keyword_for, keyword_for}, EXPR_VALUE
if, {keyword_if, modifier_if}, EXPR_VALUE
in, {keyword_in, keyword_in}, EXPR_VALUE
module, {keyword_module, keyword_module}, EXPR_VALUE
next, {keyword_next, keyword_next}, EXPR_MID
nil, {keyword_nil, keyword_nil}, EXPR_END
not, {keyword_not, keyword_not}, EXPR_ARG
or, {keyword_or, keyword_or}, EXPR_VALUE
redo, {keyword_redo, keyword_redo}, EXPR_END
rescue, {keyword_rescue, modifier_rescue}, EXPR_MID
retry, {keyword_retry, keyword_retry}, EXPR_END
return, {keyword_return, keyword_return}, EXPR_MID
self, {keyword_self, keyword_self}, EXPR_END
super, {keyword_super, keyword_super}, EXPR_ARG
then, {keyword_then, keyword_then}, EXPR_BEG
true, {keyword_true, keyword_true}, EXPR_END
undef, {keyword_undef, keyword_undef}, EXPR_FNAME|EXPR_FITEM
unless, {keyword_unless, modifier_unless}, EXPR_VALUE
until, {keyword_until, modifier_until}, EXPR_VALUE
when, {keyword_when, keyword_when}, EXPR_VALUE
while, {keyword_while, modifier_while}, EXPR_VALUE
yield, {keyword_yield, keyword_yield}, EXPR_ARG
%%
#endif

If you want to check and return a specific value if the argument being used is nil, then you can add a return before the gsub operation: 如果要检查并返回特定值(如果正在使用的参数为nil),则可以在gsub操作之前添加一个返回值:

def method_name(string)
  return string if string.nil?
  string.to_s.gsub(/(?<=\) )/, "\n")
end

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM