2009-08-06 17 views
0

我通過哈希迭代並將值顯示爲單選按鈕。哈希是這樣的:訪問控制器中的發佈數據

{ 
1=>["a", "b"], 
2=>["c"], 
3=>["a", "d", "f", "g"], 
4=>["q"] .. 
} 

選擇值後,參數變成:

{ "commit"=>"vote", "authenticity_token"=>"db863239855c9f73b9ae54c37f6b92c858acb56f", "1"=>"a", "2"=>"c", "3"=>"d", "4"=>"q"}

如何訪問,以更新控制器的更新方法,這些值(POST數據)計數字段?我嘗試過這樣。

@votings = Voting.find(:all, :conditions => {params[:k]=>params[:val]}) 
@votings.each do |voting| 
    voting.update_attribute('vote_count', 
    voting.vote_count+1) 
end 

但給出了這樣的錯誤:

You have a nil object when you didn't expect it! The error occurred while evaluating nil.each..

誰能告訴我哪裏錯了?

+1

爲什麼你堅持社區wiki的客觀問題?讓這些人獲得他們應得的聲望。 – erik 2009-08-06 14:23:33

回答

2

POST數據存儲在params哈希值。所以如果你想要參數1的值,你可以使用params[:1]

現在讓我們看看:條件。在find方法中,:conditions參數可以採用散列,這就是您提供的。但是你的代碼是說,取params[:k]的值,並將其設置爲params [:val]的值。但params[:k]在這個例子中爲零,你的params散列中沒有鍵:k。所以當你搜索時,你會收到@votings的零值。試圖在零上使用每一個都會讓你錯誤。

相關問題