Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 尝试测试HTTParty Post时遇到NoMethodError(nil:NilClass的未定义方法`gsub';)_Ruby On Rails_Api_Authentication_Mongoid_Httparty - Fatal编程技术网

Ruby on rails 尝试测试HTTParty Post时遇到NoMethodError(nil:NilClass的未定义方法`gsub';)

Ruby on rails 尝试测试HTTParty Post时遇到NoMethodError(nil:NilClass的未定义方法`gsub';),ruby-on-rails,api,authentication,mongoid,httparty,Ruby On Rails,Api,Authentication,Mongoid,Httparty,在使用HttpParty测试帖子时,我遇到以下错误: NoMethodError (undefined method `gsub' for nil:NilClass): app/models/user.rb:44:in `authorized_domain_referer?' app/controllers/api/v1/events_controller.rb:17:in `create' 在rails控制台中运行以下命令时: HTTParty.post("http://localh

在使用HttpParty测试帖子时,我遇到以下错误:

NoMethodError (undefined method `gsub' for nil:NilClass):
  app/models/user.rb:44:in `authorized_domain_referer?'
  app/controllers/api/v1/events_controller.rb:17:in `create'
在rails控制台中运行以下命令时:

HTTParty.post("http://localhost:3000/api/v1/events.json", body: {auth_token: User.last.authentication_token}, headers: {"HTTP_REFERER" => "http://one.com"}).parsed_response
这很奇怪,因为当我刚刚运行User.last.authentication\u token时,我得到了与用户关联的令牌:

User.last.authentication_token
 => "eb7bba8f1fc297a4f16a198b153015217c4ade87610e7aec78a36f0f0c33" 
这是错误发生前的完整输出:

  Started POST "/api/v1/events.json" for 127.0.0.1 at 2014-07-11 16:01:53 -0400
Processing by Api::V1::EventsController#create as JSON
  Parameters: {"auth_token"=>"eb7bba8f1fc297a4f16a198b153015217c4ade87610e7aec78a36f0f0c33"}
  MOPED: 127.0.0.1:27017 QUERY        database=trackmetrics_development collection=users selector={"$query"=>{"authentication_token"=>"eb7bba8f1fc297a4f16a198b153015217c4ade87610e7aec78a36f0f0c33"}, "$orderby"=>{:_id=>-1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.7350ms
#<User _id: 53bbdffc5368616e4b020000, name: "elad meidar", email: "elad@shinobidevs.com", encrypted_password: "$2a$10$EaQLyTACVrY6psdKGPeK9ODdSZSOOrZtNsS8r8.553MBoRyGxM8Bi", authentication_token: "eb7bba8f1fc297a4f16a198b153015217c4ade87610e7aec78a36f0f0c33", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 27, current_sign_in_at: 2014-07-11 20:01:45 UTC, last_sign_in_at: 2014-07-11 19:49:03 UTC, current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", confirmation_token: nil, confirmed_at: 2014-07-08 12:12:07 UTC, confirmation_sent_at: 2014-07-08 12:11:40 UTC, unconfirmed_email: nil>
  MOPED: 127.0.0.1:27017 UPDATE       database=trackmetrics_development collection=users selector={"_id"=>BSON::ObjectId('53bbdffc5368616e4b020000')} update={"$set"=>{"last_sign_in_at"=>2014-07-11 20:01:45 UTC, "current_sign_in_at"=>2014-07-11 20:01:53 UTC, "sign_in_count"=>28}} flags=[]
                         COMMAND      database=trackmetrics_development command={:getlasterror=>1, :w=>1} runtime: 0.5950ms
Completed 500 Internal Server Error in 4ms

NoMethodError (undefined method `gsub' for nil:NilClass):
  app/models/user.rb:44:in `authorized_domain_referer?'
  app/controllers/api/v1/events_controller.rb:17:in `create'


  Rendered /Users/shaunkoo/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.7ms)
  Rendered /Users/shaunkoo/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
  Rendered /Users/shaunkoo/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered /Users/shaunkoo/.rvm/gems/ruby-2.0.0-p353/gems/actionpack-4.0.2/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (15.5ms)
我的基本控制器如下所示:

class Api::BaseController < ApplicationController

  respond_to :json, :xml

  skip_before_filter :verify_authenticity_token

  before_filter :authenticate_from_user_token!
  before_filter :authenticate_user!

  before_filter :cors_preflight_check
  after_filter :set_headers

  def authenticate_from_user_token!
    token = params[:auth_token]
    user = User.where(authentication_token: token).first
    if user
      sign_in user, store: false
    end
  end
class Api::BaseController
有人知道为什么即使用户经过正确的身份验证和登录,它仍然是一个Nilclass吗

谢谢……

在您的
def authorized\u domain\u referer?
方法中尝试
URI.encode(request\u origin.to\s)
class Api::BaseController < ApplicationController

  respond_to :json, :xml

  skip_before_filter :verify_authenticity_token

  before_filter :authenticate_from_user_token!
  before_filter :authenticate_user!

  before_filter :cors_preflight_check
  after_filter :set_headers

  def authenticate_from_user_token!
    token = params[:auth_token]
    user = User.where(authentication_token: token).first
    if user
      sign_in user, store: false
    end
  end