2014-09-25 74 views
-4

我想鏈接到外部網站,但在此之前,我想顯示一個對話框,顯示「您正在重定向」等內容。我嘗試使用flash.now["alert"],但沒有運氣;我只是在重新定向並返回我的網站後纔看到我的消息。Rails:在重定向到外部網站之前顯示警報

我的模板包含一個帶有選擇框的表單,並根據選擇哪個選項,訪問者將被定向到網站上的另一個頁面或外部網站。

在控制器中,有一個實例變量設置爲存儲在數據庫中的值。根據該值,它將重定向到外部站點或內部頁面。

如何在重定向到外部站點之前顯示小警報?如果這必須在JavaScript中完成,我該如何將實例變量的值傳遞給JavaScript?

+0

是的,這可以用javascript來完成,但你應該自己嘗試一下,如果你不能,就到這裏用代碼提問。 – 2014-09-25 16:47:53

+0

我在問是否用javascript來完成,因爲如果可能的話,我寧願用ruby來做。 – dagarre 2014-09-25 16:52:51

+0

這應該是在客戶端,所以我認爲與'Ruby'沒有機會。 – 2014-09-25 16:55:56

回答

0

這可以非常容易地在沒有javascript的情況下完成。

只需製作一個名爲OffsiteLinks的模型,或其他東西。該模型將具有外部網址。對象的顯示路徑將重定向到外部資源。這很好,因爲你不需要顯示外部鏈接,不用擔心不必要的東西,你可以做一些事情,比如在重定向之前增加一個計數器。

如果你想顯示真正的鏈接,你幾乎堅持使用JavaScript。

其實,我很抱歉。我誤解了你的問題的一部分。如果您需要消息,您幾乎需要javascript來顯示消息或執行重定向...

您可以通過在生成的頁面上顯示「確定帶我去」鏈接來解決此問題,供用戶使用沒有js ...

0

Rails'link_to幫手允許一個confirm: message選項,它可以做你想做的。你想要做的是定義一個幫手:

def link_to_external(body, url) 
    link_to body, url, :confirm => 'You are being redirected' 
end 

現在你可以在你的模板中使用link_to_external代替link_to

link_to_external "Somewhere else", "http://example.com/" 

你能有這樣的幫手更強大的支持link_to所有選項(並允許自定義確認消息),如果你想花時間。

如果你只是想這樣一個鏈接,你可以用link_to

link_to "Somewhere else", "http://example.com/", confirm: 'You are being redirected' 

...在this answer描述。

+0

要明確,[確認消息使用javascript](http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to)。 – 2014-09-25 18:05:16

+0

它的確如此。但是你不需要自己寫JavaScript,這是我的觀點。 OP沒有說清楚他們是否有限制,不允許在應用中使用Javascript,或者他們只是不知道如何去做。 – pjmorse 2014-09-25 18:07:07

+0

是的,這在這種情況下不起作用,因爲模板中實際上沒有使用鏈接。這裏有一個帶有選擇框的表單,在控制器中,根據所選的值,訪問者將被導向到現場頁面或外部站點。 – dagarre 2014-09-25 18:09:55

相關問題