5

I've got a migration which uses a boolean value and generates a checkbox in its view. However, no matter what I click, the value saved to the database is not affected.

My migration looks like this:

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

My view looks like this:

<% 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 %>

Which produces the following 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> 

The controller is just the default generated by the scaffold.

If I set the default in the migration, that value is always saved in the database. If I do not set a default, it is always NULL.

Can anyone suggest a solution, suggestion on what might be going wrong?

Any advice appreciated.

Thanks.

2 Answers 2

14

Doh, I'd forgotten to set attr_accessible in the model.

Sign up to request clarification or add additional context in comments.

Comments

1

Try using form_for instead of semantic_form_for and replace <%= form.input :allow_comments %> with <%= form.check_box_field :allow_comments %>

1 Comment

Hi, it's not made any difference

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.