这是我在控制器中的方法:
def destroy
logger.info "INCOMING ATTACHMENT #{params[:id]}"
@prod = ProductAttachment.find(params[:id])
@product = Product.find(@prod.product_id)
if params[:id] == @product.cover_id
logger.info "ATTACHMENT MATCHED"
@prod = ProductAttachment.where(:product_id => @prod.product_id)
logger.info "ATTACHMENT #{@prod.count}"
else
logger.info "ATTACHMENT NOT MATCHED"
end
#@product_attachment.destroy
respond_to do |format|
format.html { redirect_to product_attachments_url, notice: 'Product attachment was successfully destroyed.' }
format.json { head :no_content }
end
end
即使我的params[:id]
等于1156
而@product.cover_id
返回1156
,我的条件循环仍会打印出ATTACHMENT NOT MATCHED
。谢谢!
答案 0 :(得分:3)
params[:id]
是一个字符串,@product.cover_id
是一个整数,您可以将它们更改为字符串或整数进行比较。
答案 1 :(得分:2)
这也是我陷入的陷阱。我在期待
params[:something] == true
但在binding.pry
的帮助下仔细检查参数中的每个元素后,我尝试了
params[:something].class
就在那里。它打印出string
。
突然间我开悟了。话虽这么说,不仅仅是整数中的所有参数都是字符串。