在Controller中获取未定义的方法但是方法存在并且可以在Rails控制台中使用

时间:2016-04-11 21:58:28

标签: ruby-on-rails

我正在尝试构建一个简单的Web应用程序,该应用程序将传入文本字段的数据传递给API。我创建了一个模型,其中包含一些方法来对API进行一些基本调用。我已经设置了一个带有文本字段和提交按钮的表单,以将数据传递给控制器​​。当我提交时,我收到的错误是我调用的方法没有定义。然而,如果我进入控制台并尝试同样的事情,它会按预期工作。关于我缺少什么的任何建议?

型号:

    def update(serial, deploy_value)

        HTTParty.post("#{BASE_URL}devices/update/serial/#{serial}?#{API_KEY}", 

            :body => {"customFieldValues": [{"name": "Deploy","value": "#{deploy_value}"}] }.to_json,
            :headers => { 'Content-Type' => 'application/json'}
        )

    end

控制器

class GroundControlController < ApplicationController
require 'GroundControl'

def update
    serial = params[:serial]
    GroundControl.new.update(serial, "TEST")
    redirect_to(:back)
end

end

我得到的错误:

GroundControlController#update中的NoMethodError GroundControl的未定义方法`update':0x007fa062aa1298

从控制台我可以执行以下操作:

2.3.0 :002 > require 'GroundControl'
 => true 
2.3.0 :003 > test = GroundControl.new
 => #<GroundControl:0x007fa2676a8838> 
2.3.0 :004 > GroundControl.new.update("ABC123", "TEST")
 => #<HTTParty::Response:0x7fa2671fb218 parsed_response={"id"=>43270, "serial"=>"ABC123", "udid"=>nil, "name"=>nil, "model"=>nil, "os"=>nil, "connected"=>false, "customFieldValues"=>[{"name"=>"Deploy", "value"=>"TEST"}]}, @response=#<Net::HTTPOK 200 OK readbody=true>, @headers={"server"=>["nginx/1.6.3"], "date"=>["Tue, 12 Apr 2016 15:09:27 GMT"], "content-type"=>["application/json; charset=utf-8"], "content-length"=>["150"], "connection"=>["close"], "access-control-allow-origin"=>["*"]}> 
2.3.0 :005 > 

有关我收到的错误的更多信息:

GroundControlController#update中的NoMethodError #

的未定义方法`update'
Extracted source (around line #10):
8    def update
9    serial = params[:serial]
10   GroundControl.new.update(serial, "TEST")
11   redirect_to(:back)
12
13   end

0 个答案:

没有答案