我正在开发一个rails应用程序。我想使用split(“”)拆分在我的应用程序中的搜索框中输入的句子。但我得到nil的未定义方法`split':NilClass错误。我正在使用表单数据,因为在页面加载期间表单搜索框数据为空,我收到此错误。
我的代码是: -
def string_array_conversion(sentence)
sen_array=Array.new
values = sentence.split()
values.each do |value|
sen_array.push(value)
puts value
end
puts "this is the array"
puts sen_array
return sen_array
end
这里函数参数'sentence'是表单数据。它在调用者方法中:params [pt]
调用该方法的代码是:
def new
@emp=Employee.new
@emps=Employee.all
@aut=Autocomp.new
@auts=Autocomp.all
@check=params[:pt]
puts @check
ret_sen_array=string_array_conversion(@check)
puts ret_sen_array
end
请告诉我如何解决这个问题。
答案 0 :(得分:1)
values = sentence.split()
将上一行替换为以下行。
values = if sentence.present?
sentence.split()
else
[]
end
答案 1 :(得分:0)
sentence
到达您的方法nil
。我们需要调用string_array_conversion
答案 2 :(得分:0)
错误原因是sentence
的值为nil
。确保sentence
的值不是nil
。您可以像这样控制例外,
def string_array_conversion(sentence)
return unless sentence
sen_array=Array.new
values = sentence.split()
values.each do |value|
sen_array.push(value)
puts value
end
puts "this is the array"
puts sen_array
return sen_array
end
答案 3 :(得分:0)
我会采取另一种方法来解决这个问题。
在Ruby中,nil
响应方法.to_s
并返回一个空字符串(""
)。此外,字符串可以响应此方法并返回相同的字符串(它是幂等操作)。因此,我将调用.to_s
变量的方法sentence
以确保使用字符串:
def string_array_conversion(sentence)
sen_array=Array.new
values = sentence.to_s.split()
values.each do |value|
sen_array.push(value)
puts value
end
puts "this is the array"
puts sen_array
return sen_array
end