2013-10-17 14 views
3

我見過的最奇怪的事情呢。redirect_to拋出包含條件子句的禁止AFTER?

在控制器中,我嘗試重定向到用戶發送到另一個網站:

redirect_to "http://google.com" --> This works. 

,但如果我這樣做:

if @model.true_boolean 
    redirect_to "http://google.com" --> this now gives me a Completed 403 Forbidden 
else 
    redirect_to root_path 
end 

但這個工程:

if true 
    redirect_to "http://google.com" --> this is ok now 
else 
    redirect_to root_path 
end 

如果我要重定向,顯然布爾值是真的,但它正在改變「某事」...

如何添加if語句改變任何內容?我查看了請求數據,並且它們似乎都匹配。我花了幾個小時在這裏和其他地方看。任何與我們親愛的ROR的腸子遇到這種令人沮喪的相遇者。

+0

你的模型是什麼?這似乎是你的問題,因爲每當你沒有引用它,你的重定向工作正常。 – Derek

+0

我的模型是用於註冊的,布爾值只是一個標記是true或false。但事實上,它甚至去重定向會告訴我,它認爲這是真的,應該呈現重定向。有什麼地方發生了魔法。重定向結果如何受到模型檢查允許通過的影響?它就像是在某種程度上爲交易添加了一件神器?或者這是我看過的非常愚蠢的東西。 – mindstems

+2

雖然我不能肯定地說(除非你有一個可公開訪問的頁面,我可以查看發生了什麼),我猜測試圖訪問該模型會觸發403,而不是重定向命令。但是,我不熟悉Ruby on Rails,所以我可能完全錯誤。 – Derek

回答

5

如上所述。我從我的ROR4應用程序中刪除了Turbo鏈接,並且它停止跳過它自己的腳。感謝Derek讓我以不同的方式查看代碼。

+3

只能爲當前按鈕禁用turbolink。通過添加鏈接數據:{'no-turbolink'=> true} – yozzz

1

當您將turbolink請求重定向到另一個域時,Turbolinks將在場景後面添加403響應狀態代碼。

我寫了一篇短文post以提供更多見解。希望能幫助到你。