我正在使用滑轨 我的项目使用mongodb制作API
我收到此错误:
NoMethodError:ActionController :: Parameters:0x000055f487fc4ac8的未定义方法“是否坚持?”
此错误是在我的控制器上的create方法:
def create
if @merchant.order.push(get_params)
render json: {:response => true, :status => "ok"}
else
render json: {:response => false, :status => "ok"}
end
end
def get_params
params.required(:order).permit!
end
这是我的模特:
class Order
include Mongoid::Document
include Mongoid::Timestamps
field :items
field :grand_total, type: Integer
belongs_to :merchant
end
感谢所有支持,谢谢。
答案 0 :(得分:3)
push
接受一个Order
的实例,我假设您正在传递类似ActionController::Parameters
的东西。同样,push
总是返回一个关联。我认为,如果失败了,那就例外了,然后if
就没有意义了。我建议改用create
。因此(假设get_params是ActionController::Parameters
或Hash
的实例,并且order
是has_many
的关系):
if @merchant.order.create(get_params)
render json: {:response => true, :status => "ok"}
else
render json: {:response => false, :status => "ok"}
end
end
如果是hash_one
关系,则应该类似于:
params = get_params.merge(merchant: @merchant)
if @Order.create(params)
render json: {:response => true, :status => "ok"}
else
render json: {:response => false, :status => "ok"}
end
end
答案 1 :(得分:0)
据我了解,push
接受一条记录(一个模型),而不接受参数的散列:
label = Label.first
label.bands.push(Band.first)
Docs
Mongoid检查模型是否持久,这就是为什么您在其中传递#persisted?
时调用ActionController::Parameters
的原因。
尝试某事
@merchant.order.push(Order.new(get_params))
如果order
是has_many关系或
@merchant.order = Order.new(get_params)
如果order
是has_one关系。