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 に答える