【问题标题】:Ruby on Rails 4 - How do I iterate through these params?Ruby on Rails 4 - 如何遍历这些参数?
【发布时间】:2014-02-07 10:48:33
【问题描述】:

我正在提交以下参数:

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

我的问题是:如何将“roles”参数迭代到“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

我在迭代参数时做错了什么?

谢谢!

【问题讨论】:

  • params['course']['roles'] 为您提供数组,而不是哈希。
  • 使用 .each 做 |role| ...添加角色(角色)结束

标签: ruby-on-rails ruby iteration


【解决方案1】:

params['course']['roles'] 是数组["Tuesday", "Thursday"],而不是哈希。

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

您似乎正在尝试这样做:

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

【讨论】:

  • 它在我的 irb 中返回 nil... 也许这取决于 ruby​​ 版本?
  • @ArupRakshit 我添加了一个屏幕截图。这不是我编的!哈哈
  • 是的...这是因为str[match_str] → new_str or nil.. 说 - 如果给出了 match_str,如果它出现在字符串中,则返回该字符串。 :)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2014-10-25
  • 2017-03-03
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多