rails中的ArgumentError - 意外地使用arg调用方法

时间:2017-07-20 01:27:19

标签: ruby-on-rails ruby

使用rails 5

我有以下控制器操作:

def create
    enrollment = current_user.enrollments.new(image: enroll_params[:image])
    enrollment.send
    if enrollment.save
      flash[:notice] = ['It looks like it worked']
      flash.keep(:notice)
      render js: "window.location = '#{root_path}'"
    end
  end

调用以下模型方法:

def send
    response = KairosService.enroll(self)
    self.update_attributes(response: response)
end

当我从浏览器中点击该控制器操作时,我收到以下错误:

 ArgumentError (wrong number of arguments (given 1, expected 0)):

app/models/enrollment.rb:1:in send'
app/controllers/enrollments_controller.rb:2:in create'

(错误的行号被更新以反映片段)

我无法弄清楚为什么使用enrollment.new动作调用send动作?为什么会发生这种情况,如何防止该操作被调用?

1 个答案:

答案 0 :(得分:2)

尝试将send重命名为其他内容。你不应该在Ruby中创建一个名为send的方法,因为它是Object(https://apidock.com/ruby/Object/send)上的标准(和重要)方法。

(这里Rails框架试图调用" real"作为对象创建的一部分发送,但是你的代码覆盖了定义。)