当帖子验证失败时,Rails 2.3选择丢失值

时间:2009-09-17 14:53:45

标签: ruby-on-rails

我有一个简单的表单,我在其中设置选择列表的默认值,如下所示

f.select :post,  (1..5).to_a, {:value => @author.posts }

如果在创建操作上验证失败,则此列表始终重置为1.

如果我设置了

,则在测试验证后的create方法中
@author.posts = 5 

然后它会将列表设置为5.但是它不会根据提交的内容设置列表。

试图设置

@author.posts = params[:post] 

但默认为1,使用调试器验证了params [:post]的值已选中(例如5)。

是否有一些指针正在进行中我错过了?有什么建议吗?

2 个答案:

答案 0 :(得分:0)

你的development.log会告诉你什么吗?也许Rails不允许将posts属性写入模型?

答案 1 :(得分:0)

您可能会意外地将字符串与数字进行比较。表单参数以字符串形式返回,而1..5.to_a生成一个整数数组。 @ author.posts也可能返回一个字符串。

试试这个:

f.select :post,  (1..5).to_a, {:value => @author.posts.to_s }

无论如何,请检查您的数据类型。

另外,请检查以确保您的@ author.posts值确实已填写。