f.select不会更新为false

时间:2013-08-16 18:51:47

标签: ruby-on-rails ruby

我有以下代码:

<%= f.label nil, "*Status" %><br \>
<%= f.select :full_time, [["Full Time", true], ["Daily Call", false]], :prompt => "-Select a Status-" %>

:full_time是一个布尔值(mysql中的tinyint(1))。

我遇到的问题是,当我选择“Full Time”或者为true时,它会更新mysql数据库,但是当我选择“Daily Call”或false时,它根本不会更新数据库。

为什么会发生这种情况,我应该如何解决这个问题?我会根据要求提供更多代码。

其他信息:

就控制器而言,没有涉及:full_time的代码。

在schema.rb中看起来像这样:t.boolean "full_time"

此外,每个其他字段在表单中都正常工作。

1 个答案:

答案 0 :(得分:0)

啊哈!我在控制器中找到了这段代码:

new_fields = Hash.new
@position.attributes = params[:position]
changed_fields = @position.changed
changed_fields.each do |f|
  if !@position[f].blank?
   new_fields[f] = @position[f]
  end
end

我意识到在布尔值为false时调用@position[f].blank?将返回true ..因此为什么没有添加它。

对于那些好奇的人如何工作......它稍后检查new_fields以查看它是否为空以决定是否要保存修改后的位置。

感谢您的帮助。