Ich versuche, den Wert einer Variablen, prop
, in einer Abfragezeichenfolge von einer übergebenen URL ähnlich dem, was der Herr in this Thread tat.Abfrage-String von der Extrahier-URL erhalten, wenn vorhanden
Es funktioniert, wenn es eine Abfragezeichenfolge in der URL gibt, aber wenn nicht, bekomme ich CGI.parse undefined method 'split' for nil:NilClass
Fehler. Ich habe recherchiert und das Problem liegt darin, dass keine Anfrage zu spalten ist.
Also meine Frage ist, wie kann ich für das Vorhandensein einer Abfrage Zeichenfolge testen und dann durch CGI.parse, um zu sehen, ob die prop
Abfrage Zeichenfolge ist einer von ihnen? Ich nehme an, ich könnte es wahrscheinlich über Regex tun, aber ich hatte gehofft, dass es eine Lösung von Rails gab.
Jede Hilfe wäre willkommen.
Thanx
Code: Ich bin auch den Domain-Namen der URL Referrer zu bekommen versuchen. Deshalb habe ich diese Variable dort drin.
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: ich den Fehler entkam geht durch den beigefügten Code hinzufügen. Aber ich frage mich immer noch, ob es eine bessere Rails-Lösung gibt. Ich bin noch ziemlich neu in Rails, also möchte ich sicherstellen, dass ich es richtig mache.
if encoded_url.include? "?prop"
params = CGI.parse(parse.query)
puts params['prop'].first
end
Sind Sie sicher, dass Sie durch Rails Tutorial gegangen sind? Dies ist eines der grundlegendsten Dinge zu tun. Bei jeder Anfrage spielt es keine Rolle, welches HTTP-Verb einen 'params'-Hash hat, den Sie in Ihrem Controller verwenden können, um den Wert des Schlüssels zu erhalten, den Sie benötigen. Kombinieren Sie es dann mit '. Present?' Methode in if sonst –
Oh, ich dachte, der Params-Hash war nur innerhalb einer Rails-URL zugänglich. Ich wusste nicht, dass es auch für externe URLs verfügbar war. Ich bin auf die SO-Frage gestoßen, die meiner ähnlich war, und das hat mich auch dazu gebracht, das zu glauben. Aber es macht Sinn, dass es in jedem Fall funktionieren würde. Danke. –
Lass mich wissen, ob das für dich funktioniert hat oder nicht :) –