Ruby on Rails - Флажок, не сохраняющий к базе данных?

У меня есть миграция, которая использует булево значение и генерирует флажок в его представлении. Однако независимо от того, что я нажимаю, значение, сохраненное к базе данных, не затронуто.

Моя миграция похожа на это:

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> 

Контроллер является просто значением по умолчанию, сгенерированным лесами.

Если я установил значение по умолчанию в миграции, то значение всегда сохраняется в базе данных. Если я не устанавливаю значение по умолчанию, это является всегда ПУСТЫМ.

Кто-либо может предложить решение, предложение на том, что могло бы идти не так, как надо?

Любой совет ценится.

Спасибо.

5
задан Simone Carletti 8 February 2010 в 11:37
поделиться

2 ответа

Ох, я забыл установить attr_accessible в модели.

14
ответ дан 18 December 2019 в 11:56
поделиться

Попробуйте использовать form_for вместо semantic_form_for и замените <% = form.input: allow_comments%> на <% = form.check_box_field: allow_comments%>

1
ответ дан 18 December 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: