0

我有一个数组:

@positions = ["external_footer", "external_top_menu", "external_side_menu"]

我想创建一个选择框,以便它为选项生成人性化的值,为选项值生成原始值。所以我想要这样的东西:

<option value="external_footer">External Footer</option>

现在我正在这样做:

= f.input:位置,集合:@positions.collect{|position| { 位置 => 位置.人性化}}

但它不起作用。

4

3 回答 3

3

我找到了一个解决方案:

= f.input:位置,集合:@positions.collect{|p| [ p.humanize, p ] }

于 2012-11-12T05:45:10.813 回答
0

@positions的控制器里有一个吗?,如果没有,我认为你应该改变:

positions = ["external_footer", "external_top_menu", "external_side_menu"]

至:

@positions = ["external_footer", "external_top_menu", "external_side_menu"]

你可以试试这个:

= f.input :position, collection: @positions.collect { |position| position.humanize }
于 2012-11-12T05:05:42.560 回答
0

首先,你的语法可能是错误的——你有一对额外的大括号。尝试= f.input :position, collection: @positions.collect{|position| position.humanize}= f.input :position, collection: @positions.collect(&:humanize)

假设您使用的是 SimpleForm,它可能不知道为选项标签和值调用什么方法。尝试显式传递:label_methodand或作为 lambda 传递,如此所述。:value_methodhumanize

于 2012-11-12T05:48:41.483 回答