2010-02-07 9 views
5

Mam migrację, która używa wartości boolowskiej i generuje pole wyboru w widoku. Jednak bez względu na to, co kliknę, nie wpłynie to na wartość zapisaną w bazie danych.Ruby on Rails - Checkbox nie zapisuje do bazy danych?

Moja migracja wygląda następująco:

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 

Moim zdaniem wygląda to tak:

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

która produkuje następujące 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> 

Kontroler jest po prostu domyślne generowane przez rusztowanie.

Jeśli ustawię wartość domyślną w migracji, ta wartość jest zawsze zapisywana w bazie danych. Jeśli nie ustawię wartości domyślnej, zawsze będzie ona równa NULL.

Czy ktoś może zaproponować rozwiązanie, sugestię, co może być nie tak?

Wszelkie porady są mile widziane.

Dzięki.

Odpowiedz

1

Spróbuj użyć form_for zamiast semantic_form_for i zastąpić <%= form.input :allow_comments %> z <%= form.check_box_field :allow_comments %>

+0

Witam, to nie ma żadnej różnicy. – Dan

14

Doh, zapomniałem ustawić attr_accessible w modelu.

+2

Zrobiłem ten sam błąd. Dzięki. :) –

+1

Jeszcze jedno, z tym samym błędem! – workdreamer