抓住返回的变量?

时间:2015-08-19 15:06:51

标签: ruby ruby-on-rails-3

假设我有一个名为Lead的模型和一个名为functions的控制器方法。 Lead模型有一个名为grab的方法。

def functions
    Lead.grab(data)
    puts newdata
end

def grab(data)
    newdata = data + 20
    return newdata
end

为什么这不起作用?传递newdata变量,但如果没有未定义的错误,函数方法似乎无法使用它。

3 个答案:

答案 0 :(得分:1)

你应该有newdata = Lead.grab(data)。抓取功能中的变量newdata超出了控制器的范围,因此您无法使用它。您必须将控制器中的变量设置为返回值Lead.grab(data)

答案 1 :(得分:0)

您正在尝试定义名为Lead的方法。你的意思是Lead.grab

我希望它更像是

class Lead

  def Lead.grab(data)
    ...
  end

end

当您致电functions时,没有任何名为data的内容,因此您可能会收到此错误

undefined method or local variable, 'data'

该数据变量必须来自某个地方。也许

init_data = 30
data = Lead.grab(init_data)
puts data
# 50

答案 2 :(得分:0)

尝试在Lead模型中使用self.grab(数据)...结尾

这里抓取的是一个实例方法而不是类,你通过模型调用,所以使用self来获取一个类方法。