如果争议保存更改,则将布尔值false设置为true 但在创建rails log show
之后未定义的方法`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(没有路由匹配{:action =>" create", :controller =>"争议",:order_id => false,:format => nil}
答案 0 :(得分:0)
你有@order = params [:dispute_status] == 1.这会返回一个布尔值。在你的情况下,可能是假的。所以现在@order是一个布尔值false,你试图在它上面调用update_attributes。
答案 1 :(得分:0)
FalseClass.instance_methods.include?(:update_attributes) # false
ActiveRecord::Base.instance_methods.include?(:update_attributes) # true
你的@order不是ActiveRecord :: Base实例!清楚了吗?