6

我有一个 form_for 表单,在其中,我使用了一个表单助手复选框。该模型有一个布尔值字段,但我希望能够将其显示在我的表单上,因为我认为这对用户来说更容易理解。

有什么方法可以让 Rails 表单助手像模型的布尔字段被翻转一样?

例子:

<% form_for :user do |form| %>
  <%= form.check_box :privacy_disabled %>
<% end %>

在这个例子中,用户模型有一个布尔字段privacy_disabled。我想在表格中显示此内容,如勾选此处以启用隐私。

复选框辅助函数能够设置其已选中和未选中的值,但反转这些值似乎无法使用预先保存的值正确填充复选框。

4

2 回答 2

13

这就是我最终解决这个问题的方式,我第一次尝试实际上很接近:

<%= form.check_box :privacy_disabled, 
                   {:checked => !@user.privacy_disabled}, 
                   0,
                   1 %>

所以复选框返回的值被翻转,是否开始检查也是手动翻转的。

于 2010-08-20T00:14:38.840 回答
6

不是最优雅的解决方案,但您可以执行以下操作:

  1. 将这些方法添加到您的用户模型中:

    def privacy_enabled=(val)
      self.privacy_disabled = val == "0"
    end
    def privacy_enabled
      !privacy_disabled
    end
    
  2. 将表格更改为:

    <%= form.check_box :privacy_enabled %>
    

同样,不优雅,但它有效。

于 2010-08-19T23:30:18.153 回答