Rails false:FalseClass 的未定义方法“update_attributes”

Rails undefined method `update_attributes' for false:FalseClass

如果争议保存更改订单布尔值 false 为 true 但在创建 rails 日志后显示

undefined method `update_attributes' for false:FalseClass

有人知道为什么吗?

order 
has_one :dispute

dispute
belongs_to :order


def create
    if   current_user == @order.buyer



      dispute = @order.dispute.nil? ? Dispute.new : @order.dispute

      if dispute.save
@order = params[:dispute_status] == "1"

         @order.update_attributes(:dispute_status => true)

        redirect_to order_dispute_path(@order, @dispute)
        flash[:success] = 'yess'

      else
        flash[:error] = 'Erro'
        redirect_to :back
      end
    end
  end

如果我删除@order.update_attributes(:dispute_status => true)

日志显示:

ActionController::RoutingError (No route matches {:action=>"create", :controller=>"disputes", :order_id=>false, :format=>nil}

好吧,你有 @order = params[:dispute_status] == 1。这个 returns 是一个布尔值。在你的情况下,可能是错误的。所以现在@order 是一个布尔值 false 并且您正在尝试对其调用 update_attributes。

FalseClass.instance_methods.include?(:update_attributes) # false ActiveRecord::Base.instance_methods.include?(:update_attributes) # true 您的@order 不是 ActiveRecord::Base 实例!清楚了吗?