我有以下代码:
<%= 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"
此外,每个其他字段在表单中都正常工作。
答案 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以查看它是否为空以决定是否要保存修改后的位置。
感谢您的帮助。