2014-01-17 25 views
0

我有以下PARAMS正在提交:Ruby on Rails 4 - 如何迭代这些参数?

{"utf8"=>"✓", 
"course"=> 
    { 
    "title"=>"Test", "roles"=>["Tuesday", "Thursday"] 
    } 
} 

我的问题是:我如何遍历了“角色” PARAMS为“add_role”?

我目前正在本次迭代,但它不工作:

@course.user_id = current_user.id 

params['course']['roles'].each do |key, value| 
    @course.add_role(key['course']['roles']) 
end 

我得到以下错误:undefined method '[]' for nil:NilClass

我在做什么毛病iterarting的PARAMS?

谢谢!

+0

'PARAMS [ '当然'] [ '角色']'给你数组,而不是一个哈希值。 –

+1

使用.each do | role | ... add_role(role)end –

回答

3

params['course']['roles']是阵列["Tuesday", "Thursday"],而不是散列。

在您的循环中,key取值为一个角色字符串,"Tuesday"['course']返回nilnil['roles']会导致您的错误。

你似乎在试图做到这一点:

params['course']['roles'].each do |role| 
    @course.add_role(role) 
end 

irb

+0

它在我的irb中返回'nil' ......也许它取决于ruby版本? – Vache

+0

@ArupRakshit我添加了一个截图。我没有这样做!哈哈 – Vache

+0

是的......这是因为'str [match_str]→new_str或nil' ..说 - 如果给出了匹配_字符串,如果它出现在字符串中,则返回该字符串。 –