私は変数prop
の値を、thisスレッドの紳士に似た渡されたURLのクエリ文字列で取得しようとしています。URLが存在する場合、抽出URLからクエリ文字列を取得
URLにクエリ文字列がある場合には動作しますが、そうでない場合は CGI.parse undefined method 'split' for nil:NilClass
エラーが発生します。私は研究を行いましたが、問題は分割するクエリがないためです。
私の質問はどのようにクエリ文字列の存在をテストし、CGI.parseを通して実行して、prop
クエリ文字列がそのうちの1つであるかどうかを確認する方法です。私はおそらくRegexを通じてそれを行うことができると仮定しますが、私はRailsソリューションがあることを望んでいました。
ご協力いただければ幸いです。
ありがとう
コード: 私もURLリファラーのドメイン名を取得しようとしています。それが私がそこにその変数を持っている理由です。
url = request.env['HTTP_REFERER']
encoded_url = URI.encode(url.to_s)
parse = URI.parse(encoded_url)
domain = parse.host
puts domain
params = CGI.parse(parse.query)
puts params['prop'].first
UPDATE: 私は付属のコードを追加することにより、離れて行くためにエラーが発生しました。しかし、Railsソリューションが優れているかどうかは疑問です。私はまだRailsをかなり新しくしているので、正しく実行していることを確認したい。 URLのクエリ文字列に
if encoded_url.include? "?prop"
params = CGI.parse(parse.query)
puts params['prop'].first
end
本当にあなたはレールチュートリアルを完了しましたか?これは最も基本的なことの一つです。どのリクエストでも、どのHTTP動詞に必要なキーの値を得るためにあなたのコントローラーで使用できる 'params'ハッシュがあるかは関係ありません。 –
ああ、私はparamsハッシュがRails URL内でしかアクセスできないと思った。私はそれが外部URLにも利用可能であったことを知らなかった。私は私と同じようなSOの質問に出くわしたので、それが私にそのことを信じさせた。しかし、それはすべての場合にうまくいくということは理にかなっています。 〜 –
これはあなたのために働いたかどうか、私に教えてください:) –