【问题标题】:update function throwing erro(rails)更新函数抛出错误(rails)
【发布时间】:2015-04-04 06:03:58
【问题描述】:

我遇到了一个问题,当我调用更新函数时,它会引发错误。我试图找到解决方案,但我找不到它,我无法理解错误。请告诉我代码有什么问题

从这个函数调用更新函数

  def bookmark_request
    data = params[:d]
    request_bookmarked = Request.getRequest(data)
    bookmarked_against_Request = Request.first
    request_bookmarked_2 = request_bookmarked
    bookmarked_against_Request_2 = bookmarked_against_Request

    if bookmarked_against_Request_2[:favourites]
      bookmarked_against_Request_2[:favourites] << bookmarked_against_Request[:id]
    else
      bookmarked_against_Request_2[:favourites] = Array.new
      bookmarked_against_Request_2[:favourites] << bookmarked_against_Request[:id]
    end


    Request.updateRequest(bookmarked_against_Request , bookmarked_against_Request_2)
    redirect_to :action => "active"
  end

更新代码是这样的

def updateRequest(request,req_data)
 if request.update(req_data)
  request
 end
end

我得到的错误是这个

**NoMethodError at requests/bookmark_request

未定义的方法`empty?'请求:0x007f3fa44c59b0**

如果 request.update(req_data) 总是会出现错误

我没有 10 的声誉,所以我发布了错误截图的链接 http://tinypic.com/r/whbiv7/8

【问题讨论】:

    标签: ruby-on-rails ruby mongodb ruby-on-rails-4 mongoid


    【解决方案1】:

    update() 方法的参数应该是一个哈希值。但是您的 req_data 参数实际上在这里变成了 Request

    def bookmark_request
     bookmarked_against_Request = Request.first
     ...
     bookmarked_against_Request_2 = bookmarked_against_Request
     ...
    end
    

    Request 类没有empty? 方法。此外,如果根本没有请求,它可能会变成nil

    【讨论】:

    • 你能告诉我如何纠正我。这将是一个很大的帮助
    • 是否可以传递整个对象并且该请求将根据传递的对象进行更新?
    • 感谢您的解决方案。如果我必须更新多个属性,我只需要再问一件事,如果它们像 request.upadte(req_data.attribute, req_data.attribute) 一样用逗号分隔,我该怎么做?或者我应该分别更新每个属性
    • 我试着按照你说的去做,但它现在给了我这个错误undefined method `each_pair' for [BSON::ObjectId('55191e7a6761720bd9020000')]:Array
    • 对不起,我对 MongoDB 没有经验,但你可以试试这个:'request.update(Hash[req_data.attributes])'。使用 Activerecord 更新多个属性,您只需将哈希(例如 {attr1: 123, attr2: 'value' })传递给 update() 或 update_attributes() 方法
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 2015-03-27
    • 2014-01-27
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多