使用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动作?为什么会发生这种情况,如何防止该操作被调用?
答案 0 :(得分:2)
尝试将send
重命名为其他内容。你不应该在Ruby中创建一个名为send
的方法,因为它是Object(https://apidock.com/ruby/Object/send)上的标准(和重要)方法。
(这里Rails框架试图调用" real"作为对象创建的一部分发送,但是你的代码覆盖了定义。)