Rails collection_select语法

时间:2016-04-07 15:59:27

标签: ruby-on-rails ruby-on-rails-4

我遇到以下代码问题:

  = f.collection_select :ch_professional, @ch_professionals

我正在尝试使用select设置ch_professional字段。 @ch_professionals是一个字符串数组。

我收到以下错误:

  

ActionView :: Template :: Error({}不是符号)

我在collection_select上查找过文档,但我找不到正确的语法。

2 个答案:

答案 0 :(得分:1)

collection_select的签名是

  

collection_select(object,method,collection,value_method,text_method,options = {},html_options = {})

它期望value_methodtext_method是带有方法名称的符号,这些方法名称将被调用以从每个数组元素中获取相应的值。

关于{}的错误是由于rails处理选项哈希值的方式,因此{}的默认哈希值最终在value_method中结束。

所以尝试类似:

= f.collection_select :ch_professional, @ch_professionals, :to_s, :to_s

答案 1 :(得分:1)

如果你只有一个字符串数组,并且不需要为选项的值和文本设置不同的值,请使用select表单助手,例如。

= f.select :ch_professional, @ch_professionals