我想知道如何在返回表单时将选择下拉列表设置为对象的正确值。这是我到目前为止所拥有的。
在我的模型中,我有一个数组,其中包含颜色选择下拉列表的名称和值。
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
将颜色选择设置为正确的值。
答案 0 :(得分:1)
尝试使用options_for_select
代替options_from_collection_for_select
。
options_from_collection_for_select
希望你传递ruby对象,而options_for_select
期望一个douples数组,看起来就是你拥有的