rails中url传值一现象

最近工作中遇到了个问题,写测试代码时发现的。

 

控制器内:

 

class AnysController < ApplicationController

	before_filter :require_admin
 
	def index
		if params[:type] then
			@anys = Any.list_by_type(params[:type]) 
		else
                        @anys= Any.all
                end
        end
 end

 

 测试代码:

 

# it is not true
Any.create(type: 1)
Any.create(type: 2)
Any.create(type: 4)

assert_equal Any.all.count, 3

get 'index', :format => :json, :type => 1
retval = JSON.parse(@response.body)
assert_equal retval.count, 1

 

 在运行测试时,会在底下一行遇到错误,实际上retval.count=3的,也就是程序走的是else语句的部分。但只要把控制器内的params[:type]修改一下,则不会出现此错误。

 

if  !params[:type].nil? then
...

 

这是为什么呢?

 

ruby内不是说除了nil和false都是 true 吗? 作为条件时,params[:type] 和!params[:type].nil? 结果不是一样的?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值