为什么值传递给可选哈希中的方法`nil`? (红宝石)

时间:2016-08-22 21:21:07

标签: ruby-on-rails ruby hash

我已经创建了一个自定义方法,并尝试通过可选的哈希值向其传递值。

但是错误消息向我表明该方法实际上并没有接收我传递的值,因此nil

查看:

<%= f.custom_form :height, { item: ‘weight’} %>

方式:

def custom_form(type, additional_items = {} )
  class_array = [‘form_control’]

  if additional_items
    class_array << additional_items[:item]
  end
end

错误:

  

没有将nil隐式转换为String

但我不确定为什么会这样。

如果这是一个新手问题,请提前道歉。

1 个答案:

答案 0 :(得分:1)

此行不明确

<%= f.custom_form :height, { item: ‘weight’} %>

因为它可以被解释为一个参数和一个块

尝试使用明确的括号,并且您不需要哈希大括号,它们将被假设

<%= f.custom_form(:height, item: ‘weight’) %>