我在我的模型('Bambino')中设置了一个多选字段,为字符串属性'status'赋值。从我的表格部分找到以下代码:
<%= f.select(:status, options_for_select([['segnalato','segnalato'],
['inserito','inserito'],['drop','drop'],['concluso','concluso']])) %>
当我想编辑我的记录时,编辑表单不会返回先前存储的值,而是自动将默认值设置为'segnalato'(例如:如果我创建新记录,则将状态设置为'inserito',之后我想编辑我获得编辑表单的记录,默认值为'segnalato',而我期望在'inserito'字段中看到)。
通过这种方式编辑记录时,出现数据输入错误的可能性非常高。为什么这样?有没有办法检索创建记录时分配的正确“状态”值?感谢
答案 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
更简洁。