ruby-on-rails - f.select 不更新 false

标签 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 是一个 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/

相关文章:

javascript - 更新应用程序布局图标

ruby - 在运行时更改 MongoMapper 当前数据库

ruby-on-rails - 查明 resque 作业是否仍在运行,如果卡住则终止它

ruby-on-rails - 如何将参数传递给符号方法调用

ruby-on-rails - 实现帐户范围

ruby - 在脚本中创建NotificationHub(首选Ruby)

ruby-on-rails - 传递一个字符串作为方法参数,稍后进行插值

ruby-on-rails - 如何避免Rails脚手架将模型放入命名空间

ruby-on-rails - 具有即用型 Rails 开发环境的 VM 镜像?

ruby-on-rails - Rails:在Docker中使用Figaro定义的环境变量