在控制器中调用模型自定义方法
Calling model custom method in controller
我试图在我的控制器中调用我在模型中创建的自定义方法,但是当我提交指向控制器操作的表单时,出现以下错误:
undefined method `add_manager' for #Rally:0x4c1fa90
def add_manager
if @rally.add_manager(manager_params)
format.html { redirect_to @rally, notice: 'Manager successfully added.' }
format.json { head :no_content }
else
这是我的代码
rally.rb
def self.add_manager(params)
user = User.where(:email => params[:email])
rally.users << user
end
rallies_controller.rb
def add_manager
if @rally.add_manager(manager_params)
format.html { redirect_to @rally, notice: 'Manager successfully added.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @rally.errors, status: :unprocessable_entity }
end
end
到目前为止我已经完成的测试:
- 检查@rally 是否设置:有效
- 检查列出的可用方法:add_manager 未列出
- 已在 rails 控制台中测试所有命令:有效
知道我做错了什么吗?
更改class方法:
def self.add_manager(params)
到实例方法:
def add_manager(params)
因为@rally 是您的 Rally 的一个实例 class
(在上面的评论中回答 - 从未回答的列表中删除)
我试图在我的控制器中调用我在模型中创建的自定义方法,但是当我提交指向控制器操作的表单时,出现以下错误:
undefined method `add_manager' for #Rally:0x4c1fa90
def add_manager
if @rally.add_manager(manager_params)
format.html { redirect_to @rally, notice: 'Manager successfully added.' }
format.json { head :no_content }
else
这是我的代码
rally.rb
def self.add_manager(params)
user = User.where(:email => params[:email])
rally.users << user
end
rallies_controller.rb
def add_manager
if @rally.add_manager(manager_params)
format.html { redirect_to @rally, notice: 'Manager successfully added.' }
format.json { head :no_content }
else
format.html { render action: 'edit' }
format.json { render json: @rally.errors, status: :unprocessable_entity }
end
end
到目前为止我已经完成的测试:
- 检查@rally 是否设置:有效
- 检查列出的可用方法:add_manager 未列出
- 已在 rails 控制台中测试所有命令:有效
知道我做错了什么吗?
更改class方法:
def self.add_manager(params)
到实例方法:
def add_manager(params)
因为@rally 是您的 Rally 的一个实例 class
(在上面的评论中回答 - 从未回答的列表中删除)