Ruby on Rails - Checkbox没有保存到数据库?

时间:2010-02-07 18:19:17

标签: ruby-on-rails checkbox boolean

我有一个使用布尔值的迁移,并在其视图中生成一个复选框。但是,无论我单击什么,保存到数据库的值都不会受到影响。

我的迁移看起来像这样:

def self.up
    create_table :blogposts do |t|
      t.string :title
      t.text :body
      t.boolean :allow_comments, :default => false  
      t.references :author
      t.references :lasteditor
      t.timestamps
    end
  end

我的观点如下:

<% semantic_form_for([:controlpanel, @blogpost]) do |form| %>
<%= form.error_messages %>
<% form.inputs do %>
<%= form.input :title %>
<%= form.input :body %>
<%= form.input :allow_comments %>
<% end %>
<%= form.buttons %>
  

生成以下HTML:

<li class="boolean required" id="blogpost_allow_comments_input">
<label for="blogpost_allow_comments">
<input id="blogpost_allow_comments" name="blogpost[allow_comments]" type="checkbox" value="1" />
<input name="blogpost[allow_comments]" type="hidden" value="0" />Allow comments
<abbr title="required">*</abbr>
</label>
</li> 

控制器只是脚手架生成的默认值。

如果我在迁移中设置了默认值,则该值始终保存在数据库中。如果我没有设置默认值,则它始终为NULL。

有人可以提出解决方案,建议可能出现的问题吗?

任何建议表示赞赏。

感谢。

2 个答案:

答案 0 :(得分:14)

Doh,我忘了在模型中设置attr_accessible。

答案 1 :(得分:1)

尝试使用form_for代替semantic_form_for,并将<%= form.input :allow_comments %>替换为<%= form.check_box_field :allow_comments %>