访问控制器中的帖子数据

时间:2009-08-06 12:57:33

标签: ruby-on-rails

我正在迭代哈希并将值显示为单选按钮。哈希看起来像这样:

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

选择值后,参数变为:

  

{“commit”=>“投票”,   “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

但是给出了这个错误:

  

当你没想到它时,你有一个零对象!   评估nil.each时发生错误..

有谁可以告诉我哪里出错了?

2 个答案:

答案 0 :(得分:3)

POST数据存储在params哈希中。因此,如果您想要参数1的值,则可以使用params[:1]

现在让我们来看看:条件。在find方法中,:conditions参数可以采用哈希值,这是您提供的。但是你的代码说,取params[:k]的值并将其设置为params [:val]的值。但是在此示例中params[:k]为nil,在params散列中没有键:k。因此,当您搜索时,您将获得@votings的零值。试着在零上使用每个都会给你带来错误。

答案 1 :(得分:-2)

您遇到严重困难的原因是因为您正在反对Rails中的惯例。

尝试使用这个大小,虽然它需要丢弃你已经写过的很多代码,然后想知道你的应用程序中已经注入了魔法Rails:http://railscasts.com/episodes/17-habtm-checkboxes