Добавить строку запроса в request.request_uri, не зная, была ли строка запроса - PullRequest
1 голос
/ 03 февраля 2011

Когда пользователь заходит на мой сайт на iPhone, я хочу представить ему страницу с 2 вариантами:

1) Зайдите в наше приложение или 2) Перейдите на запрошенный URL

Я делаю это, проверяя пользовательский агент в моем контроллере приложения и отображая представление.

Чтобы опция 2 работала правильно в этом представлении, я хочу, чтобы ссылка сохранила исходный URL и добавила параметр строки запроса fullsite = 1. Я ищу этот параметр параметра строки запроса в before_filter в моем контроллере приложения и устанавливаю cookie, чтобы пользователь больше не запрашивался.

Какой самый простой способ добавить параметр строки запроса в request.request_uri, зная, что в этом URL-адресе может быть или не быть строка запроса, с которой можно начать? Я знаю, что просто проверить, есть ли в запросе параметры, но мне интересно, есть ли помощник для точного добавления параметра в любом случае (без параметров или с существующими параметрами), не оценивая самостоятельно В поисках правильного "рейлсного" способа сделать это.

1 Ответ

2 голосов
/ 07 февраля 2011

Вероятно, лучший способ сделать это - добавить свой флаг в хэш параметров, в котором уже будет вся другая информация, необходимая для построения этой ссылки (при условии, что вы ловите айфоны и визуализируете в before_filter), а затемсоздайте свою ссылку из модифицированного хэша params:

В вашем before_filter:

params[:fullsite] = 1

А затем, на ваш взгляд:

<%= link_to('Continue to the Full Site', params) %>

Таким образом, Rails делает всегрязная работа по экранированию и добавлению строк запроса - как :fullsite, так и любой другой исходной строки запроса.

Если вы просто используете :fullsite как способ избежать перенаправления iPhone через портал iPhone несколькоОднако иногда кажется, что любой из этих подходов будет работать лучше:

  1. Вместо этого установите :fulltext в сеансе или
  2. Перенаправляйте пользователей только в том случае, если они находятся на iPhone иrequest.referer это что-то отличное от вашего сайта.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...