Ruby on rails 控制器中的命名错误
您好,我是Ruby的新手,我正在尝试在我的项目控制器中创建一个方法,如下所示:Ruby on rails 控制器中的命名错误,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,您好,我是Ruby的新手,我正在尝试在我的项目控制器中创建一个方法,如下所示: def update_phase @project = Project.find(params[:id]) diff = (Date.current.year * 12 + Date.current.month) - (@project.starting.year * 12 + @project.starting.month) case when diff >= 30
def update_phase
@project = Project.find(params[:id])
diff = (Date.current.year * 12 + Date.current.month) - (@project.starting.year * 12 + @project.starting.month)
case
when diff >= 30
@project.process = 11
.
.
.
when diff >= 0
@project.process = 1
else
@project.process = 0
end
proc = @project.process.to_f
case
when proc >= 9
@project.phase = "Final"
when proc >= 5
@project.phase = "Desarrollo"
when proc >= 1
@project.phase = "Inicio"
else
@project.phase = "Error en el proceso"
end
end
开始
是模型中的时间戳。我认为:
但我得到了一个错误:“项目中的NoMethodError#show”
如何解决此问题?根据
的起始位置,您可以在保存回调之前使用,这样每次创建新记录时,它触发update\u phase
方法,并从当前项目对象为process
和phase
分配值:
class Project < ApplicationRecord
before_save :update_phase
...
def update_phase
diff = (Date.current.year * 12 + Date.current.month) - (self.starting.year * 12 + self.starting.month)
case
when diff >= 30
self.process = 11
...
end
proc = self.process.to_f
case
when proc >= 9
self.phase = 'Final'
...
end
end
end
类项目=30时
self.process=11
...
结束
proc=自处理到
案例
当proc>=9时
self.phase='Final'
...
结束
结束
结束
什么是开始
?我尝试过这样做,但流程和阶段属性都没有保存在实例中starting是项目模型中的时间戳OOPS,starting是项目中的属性我已经更新了问题和代码,仍然有相同的错误,添加了行“保存之前:更新阶段”出现错误“undefined method`before_save'for Projects controller:Class是什么意思?before_filter”并且每次用户列出项目时都会调用update_阶段,因此它将仅在现有项目上运行您正在使用控制器@IvanHid中的方法,它是类项目上的一个方法,这就是为什么“保存前”
不可用的原因。很抱歉,我将其移动到了控制器,因为在该模型中,它工作了,但没有更新任何属性,它仅为调用的页面显示它们谢谢!将方法移动到模型后,它就工作了!原来我用的是@project而不是self