我有以下代码:
<%= f.label nil, "*Status" %><br \>
<%= f.select :full_time, [["Full Time", true], ["Daily Call", false]], :prompt => "-Select a Status-" %>
:full_time
是一个 bool 值(mysql 中的 tinyint(1))。
我遇到的问题是,当我选择“Full Time”或 true 时,它会更新 mysql 数据库,但当我选择“Daily Call”或 false 时,它根本不会更新数据库。
为什么会发生这种情况,我该如何解决??我会根据要求提供更多代码。
附加信息:
就 Controller 而言,没有涉及 :full_time
的代码。
在 schema.rb 中看起来像这样:t.boolean "full_time"
此外,表单中的所有其他字段都运行良好。
最佳答案
啊哈!我在我的 Controller 中找到了这段代码:
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
我意识到调用 @position[f].blank?
一个 bool 值是 false 将返回 true.. 因此它没有被添加。
对于那些好奇它为什么不起作用的人...它稍后会检查 new_fields 以查看它是否为空,以决定是否要保存修改后的位置。
感谢您的帮助。
关于ruby-on-rails - f.select 不更新 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280202/