2015-01-17 3 views
0

Я пытаюсь реализовать партнерскую ссылку на своем веб-сайте. Я использовал это с JavaScript, но я хотел бы сохранить ссылку в контроллере, а не передавать ее JavaScript или html в будущем. С JavaScript я ждал, пока целевая страница не будет загружена (или не менее 1 сек) и перенаправит пользователя на эту страницу позже.Перенаправление, когда целевая страница полностью загружена

Если я использую «redirect_to» в своем контроллере рельсов, он перенаправляет напрямую, что полностью скрывает представление. Есть ли способ использовать redirect_to через определенное количество времени, чтобы хотя бы мое представление отображалось или после полной загрузки целевой страницы?

Пример кода ниже:

def index 
    redirect_to www.google.com 
end 
+0

установить переадресацию URL переменного в контроллере и использовать '$ (window) .load() ...' .with' window.location' – Nithin

+0

Это именно то, что я сейчас делаю. Но тогда URL-адрес был бы видимым в JS-коде, который не является моей интенсией. –

+0

Но Крис, как только перенаправление произойдет, ссылка будет видна пользователю в любом случае. Каково ваше намерение, попытаться скрыть ссылку от пользователя или управлять ссылкой в ​​Ruby? –

ответ

1

Вы можете использовать метод рубин сна, просто знаю, что это пустая трата ресурсов и не достичь желаемого эффект.

def index 
    sleep 3 
    redirect_to www.google.com 
end 

Решение JS было бы более эффективным решением. Если вы беспокоитесь о том, что пользователи просматривают эту ссылку, я бы предложил этот подход. Используйте JS для определения того, когда страница загружается, и подождите, пока какое-то время, которое ваши пользователи должны просмотреть перед перенаправлением. Затем используйте JS для перенаправления на другое действие контроллера на вашем сайте, у которого будет прямая переадресация. Это обеспечит загрузку страницы для пользователя перед перенаправлением, пользователь имеет достаточно времени, чтобы посмотреть, что находится на этой странице, и ваша партнерская ссылка в Руби не JS, такие как:

def redirect_to_affiliate 
    redirect_to www.google.com 
end 
0

Так что действие вызывается, когда пользователь нажимает на партнерскую ссылку?

Есть и другие способы, но я не понимаю, почему это не будет работать:

def affiliate_link 
    sleep 2 # or whatever you deem appropriate 

    # some other code 
    redirect_to some_path 
end 
+0

благодарит за ответ. Пользователь нажимает ссылку, открывается страница, где происходит перенаправление. Поэтому я не могу использовать сон, поскольку представление страницы перенаправления не будет отображаться. –

+0

Извините, думаю, я не понимаю, что вы имеете в виду - в своем сообщении вы говорите: «Если я использую« redirect_to »в своем контроллере rails, он перенаправляет напрямую, что полностью скрывает представление. Можно ли использовать redirect_to после определенное количество времени, по крайней мере, мое представление появляется или после того, как целевая страница полностью загружена? " Можете ли вы объяснить, что вы подразумеваете более четко? – dax

+0

1. пользователь нажимает на страницу по ссылке (контроллер подробной страницы) -> перенаправляется на страницу 2. пользователь приземляется на внешнюю страницу (внешний контроллер) и должен быть перенаправлен на целевую страницу автоматически Код, который я опубликовал, находится вне контроллера. Этот контроллер должен автоматически перенаправлять пользователя на целевую страницу. Если я добавляю sleep 2 к методу индекса, полное представление блокируется в течение 2 секунд, а это означает, что представление не является рендерингом, и пользователь увидит пустую страницу. Мое намерение - показать пользователю страницу загрузки. –

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