铁轨无法获得符号参数

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)

我为什么要使用这种方法?有没有办法将数据作为符号发送?

Dav*_* S. 5

从HTML表单接收的数据始终是一个字符串,rails不会将这些值自动转换为符号.通常,键是符号化的,而不是值.

我建议将你的值(例如:new,:old等)视为字符串,然后事情就会保持一致.另请注意,如果没有某种序列化,您的数据存储很可能无法处理符号(例如,它们将转换为yaml).