0

我是红宝石的新手,我不确定这个问题是否合适,但这是我的问题。

我有一个带有无限字符串参数的函数。我想知道它们是否都在http请求中。这是我的代码:

def http__params_exists *list
    list.each do |p|
        if params[:'#{p}'].nil?
            return false
        end
    end
    true
end

举个例子:我有一个带有“lat”参数的查询。我想要执行的条件是if params[:lat].nil?

我尝试了一些技巧,但都失败了。谢谢。

ps:关于红宝石的另一个问题。我不确切知道符号:method_not_allowed(例如)是什么类型的对象。我知道我们可以调用一个函数来命名一些参数,但是这个对象已经在某个地方定义了,好像它是控制器的公共变量,但它似乎不是。

4

1 回答 1

2

您需要使用"而不是'这样才能解释变量。例子

a = 'string'

:'#{a}'
==> :"\#{a}"

:"#{a}"
==> :string

:"#{a}" == :string
==> true

所以,你的代码应该是

...
if params[:"#{p}"].nil?
  return false
end
...

是一个有趣的链接,可以了解更多关于 Ruby 符号的信息。

于 2012-08-25T02:02:22.753 回答