2015-04-06 50 views
0

我無法弄清楚這一點,似乎並沒有在我能找到的任何地方直接討論。這是我的問題:我如何重置參數,使參數散列爲空我渲染'新'?如果滿足條件,則清除參數Rails 4

a = ['United', '1769'] 

    Airline.all.each do |z| 
     if z.carrier == a[0] && z.flight == a[1] 
     #DO SOME STUFF 
     elsif z.carrier != a[0] || z.flight != a[1] 
     #CLEAR PARAMS HERE/DELETE CURRENT INSTANCE 
     render 'new' 
     end 
    end 

我想通過Airline迭代並與之前存儲的用戶輸入數組「a」進行比較以確保它們匹配。如果數組中的一個或兩個對象與Airline中的任何內容不匹配,我基本上都想告訴用戶「嘿,那不存在,我們會讓你開始。」渲染'新'將它發送到新的控制器操作就好,但它保留了先前爲所討論的對象設置的參數。

那麼我該怎麼說「如果Airline中的一個或兩個東西不匹配用戶輸入,請清除參數散列,然後將其發送到控制器中的'新'動作?理想情況下,我希望在不告訴它銷燬當前對象實例的情況下(或者最後一個看起來實際上是同一件事情)這樣做,因爲這會起作用,但是當我呈現「新」時會導致凍結哈希。

回答

1

而不是操縱params散列,你應該將用戶重定向到他可以重新開始的頁面。

像這樣的東西替換此行render 'new'

redirect_to new_airlines_path, alert: 'Please start over...' 
+0

是的,最好我不想操縱params哈希表......我聽說這是一個很大的禁忌,可引起各種問題。你的建議提出了另一個錯誤(我認爲我可以解決 - 它在一個循環中,所以它要求多次重定向,必須在遍歷所有航空公司時打破這個循環),所以我認爲它會起作用。但我不太明白它爲什麼會起作用......傳統上params被重定向時,它是否是慣例? – DanielNordby

+1

是的,重定向重新加載頁面,因此重置參數(每次請求都會得到一組新的參數)。 – spickermann

+0

謝謝!對下一個錯誤:) – DanielNordby