Rails显示失败的条件结果

时间:2016-04-20 04:02:17

标签: ruby-on-rails ruby

这是我在控制器中的方法:

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。谢谢!

2 个答案:

答案 0 :(得分:3)

params[:id]是一个字符串,@product.cover_id是一个整数,您可以将它们更改为字符串或整数进行比较。

答案 1 :(得分:2)

这也是我陷入的陷阱。我在期待

params[:something] == true

但在binding.pry的帮助下仔细检查参数中的每个元素后,我尝试了

params[:something].class

就在那里。它打印出string

突然间我开悟了。话虽这么说,不仅仅是整数中的所有参数都是字符串。