2016-11-04 5 views
1

Я пытаюсь получить значение переменной, prop, в строке запроса из переданного URL-адреса, аналогичного тому, что делал джентльмен в this.Получить строку запроса из URL-адреса извлечения, если существует

Это работает, если в URL-адресе есть строка запроса, но если нет, я получаю ошибку CGI.parse undefined method 'split' for nil:NilClass. Я занимался исследованиями, и проблема в том, что запрос на разделение не существует.

Итак, мой вопрос заключается в том, как я могу проверить наличие любой строки запроса, а затем запустить ее через CGI.parse, чтобы увидеть, является ли строка запроса prop одной из них? Я предполагаю, что мог бы сделать это через Regex, но я надеялся, что есть решение Rails.

Любая помощь будет оценена по достоинству.

Thanx

Код: Я также пытаюсь получить доменное имя 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, поэтому я хочу убедиться, что я делаю это правильно.

if encoded_url.include? "?prop" 
    params = CGI.parse(parse.query) 
    puts params['prop'].first 
end 
+1

Вы уверены, что ознакомились с рельсами? Это одна из самых основных вещей. Каждый запрос не имеет значения, какой HTTP-глагол имеет hash params, который вы можете использовать в своем контроллере, чтобы получить значение необходимого ключа. Объедините его тогда с методом '.present?', Если else –

+0

О, я думал, что хэш-параметры params доступны только в URL-адресе Rails. Я не знал, что он доступен для внешних URL-адресов. Я столкнулся с вопросом SO, который был похож на мой, так что это также заставило меня поверить в это. Но имеет смысл, что это будет работать в каждом случае. Thanx. –

+0

Дайте мне знать, если это сработало для вас, или нет :) –

ответ

2

Ключи в строке запроса в URL можно получить с помощью params[] хэш, даже если URL-адрес не присутствует внутри самого приложения. Вот как удобно для рельсов общаться с внешним миром. Обратите внимание, что рельсы одинаково обрабатывают все HTTP-глаголы, когда речь заходит о использовании хэша params[].
Использование: puts params[:your_key]

Смежные вопросы