获取一系列名称和值,并创建一个可以根据对象属性值

时间:2015-06-17 15:15:56

标签: ruby-on-rails ruby

我想知道如何在返回表单时将选择下拉列表设置为对象的正确值。这是我到目前为止所拥有的。

在我的模型中,我有一个数组,其中包含颜色选择下拉列表的名称和值。

ROW_COLORS = [["Green", "greenTableRow"], ["Red", "redTableRow"], ["Orange", "orangeTableRow"], ["Yellow", "yellowTableRow"]]

然后我将ROW_COLORS设置为控制器中的变量@row_colors

我在视图中循环遍历一系列规则对象......

<% rule_formats.each do |rule| %>

每个现有的rule都有一个名为color_class的属性。

然后在我的表单中,我尝试使用颜色名称(例如green)创建一个下拉列表,每个颜色的值(greenTableRow)为{{1 }}

color_class

但是这会导致<%= f.select("column_color", options_from_collection_for_select(@row_options, rule.color_class), {include_blank: "-- Select Color --", class: 'span7'}) %> 错误。

我知道如果wrong number of arguments (2 for 3..4)是一个对象我可以做类似@row_options的事情但是因为options_from_collection_for_select(@row_options, :color_class, :name, rule.color_class)只是一个数组...我不确定我是不是#39} ;甚至使用正确的helper_method。

当用户返回之前提交的表单时,我找不到如何使用@row_options将颜色选择设置为正确的值。

1 个答案:

答案 0 :(得分:1)

尝试使用options_for_select代替options_from_collection_for_select

options_from_collection_for_select希望你传递ruby对象,而options_for_select期望一个douples数组,看起来就是你拥有的