use*_*468 0 ruby ruby-on-rails ruby-on-rails-3.1
我有一个模型,这个模型有一个名称为status的属性.这是对状态的验证;
validates_inclusion_of :status, :in => [:nil, :new, :old], :message => "......"
Run Code Online (Sandbox Code Playgroud)
我为我的模型创建了一个编辑表单,这是我的选择输入;
=f.select :status, [["New Record", :new], ["Old Record", :old]], {:include_blank => false}
Run Code Online (Sandbox Code Playgroud)
当我提交编辑表单时,我无法获得作为符号的状态并获得有关此区域的错误.
当尝试使用"to_sym"方法更改状态参数时,它可以工作.
params[:my_model][:status] = params[:my_model][:status].to_sym
Run Code Online (Sandbox Code Playgroud)
我为什么要使用这种方法?有没有办法将数据作为符号发送?
从HTML表单接收的数据始终是一个字符串,rails不会将这些值自动转换为符号.通常,键是符号化的,而不是值.
我建议将你的值(例如:new,:old等)视为字符串,然后事情就会保持一致.另请注意,如果没有某种序列化,您的数据存储很可能无法处理符号(例如,它们将转换为yaml).
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |