与方法拆分相关的问题

时间:2016-07-15 07:49:09

标签: ruby-on-rails ruby forms ruby-on-rails-4 split

我正在开发一个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

请告诉我如何解决这个问题。

4 个答案:

答案 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