Rails数据库哈希不更新形式

时间:2018-08-10 22:55:56

标签: ruby-on-rails ruby

我在我的帐户模型中保存了一个哈希值,用于根据用户偏好存储它们的设置。

<%= form_with(model: account, local: true, html: { multipart: true }) do |f| %>
  <div class="form-group">
    <% @account.settings.each do |key, val| %>
      <%= f.label :allow_teachers_to_create_maps?, class: 'control-label' %>
      <%= check_box_tag "account[settings][#{key}]", value = val, checked = val %>
    <% end %>
  </div>
  <%= f.submit class: 'btn btn-primary' %>
<% end %>

到目前为止,我的帐户数据库中唯一的“设置”是以下哈希值:{:can_create=>false}

它将填充复选框,设置数据库值的值,如果该值为true,则将其标记为选中。但是,它不会在数据库中更新。

以防万一有人要求模型:

class Account < ApplicationRecord
    serialize :settings
end

如果我选中此框,该表单将保存,并且服务器日志中的任何位置都没有可见的错误。有人知道为什么会这样吗?

我确实在日志中的某个地方看到了此错误,但是在页面加载或表单保存时并没有产生该错误。

ActionView::Template::Error (undefined method `merge' for false:FalseClass):
    15:   <div class="form-group">
    16:     <% @account.settings.each do |key, val| %>
    17:       <%= f.label :allow_teachers_to_create_maps?, class: 'control-label' %>
    18:       <%= f.check_box "account[settings][#{key}]", value = val, checked = val %>
    19:     <% end %>
    20:   </div>
    21:   <%= f.submit class: 'btn btn-primary' %>

旁注:

我认为很难将值设置为数据库中的任何值,但是在从check_box_tag中删除了整个值之后发现问题仍然存在。

0 个答案:

没有答案