Rails多选选项字段问题

时间:2015-12-11 09:47:05

标签: ruby-on-rails

我在我的模型('Bambino')中设置了一个多选字段,为字符串属性'status'赋值。从我的表格部分找到以下代码:

 <%= f.select(:status, options_for_select([['segnalato','segnalato'],
['inserito','inserito'],['drop','drop'],['concluso','concluso']])) %>

当我想编辑我的记录时,编辑表单不会返回先前存储的值,而是自动将默认值设置为'segnalato'(例如:如果我创建新记录,则将状态设置为'inserito',之后我想编辑我获得编辑表单的记录,默认值为'segnalato',而我期望在'inserito'字段中看到)。

通过这种方式编辑记录时,出现数据输入错误的可能性非常高。为什么这样?有没有办法检索创建记录时分配的正确“状态”值?感谢

2 个答案:

答案 0 :(得分:0)

您确定是否等于其中一个值?在进一步调试之前检查一下。

答案 1 :(得分:0)

虽然Andrey Deineko的答案可能就是你想要的答案,但有更好的方法来实现你正在做的事情:enum

#app/models/bambino.rb
class Bambino < ActiveRecord::Base
   enum status: ['segnalato', 'inserito', 'drop', 'concluso']
end

这样您就可以使用following

<%= f.select :color, Banbino.status.to_a.map { |w| [w.humanize, w] } %>

这将存储status的数字,同时允许您定义每个数字的含义。它不会对加载预先选择的对象做任何事情(这是Andrey的答案会做的事情),但是会让你能够使你的应用程序和select更简洁。