Rails: флажок form_for установлен в true или false независимо от того, установлен флажок или не установлен

У меня есть модель с именем users, которая имеет 2 логических атрибутаsend_email а такжеsend_text, У меня есть форма, которая редактирует модель User, и я хочу, чтобы она установила для этих атрибутов значение true / false в зависимости от того, установлен флажок или не установлен. Вот моя форма


    
         <br>
         <br>
    
    
         <br>
         <br>
    
    
         <br>
         <br>
    
    
         <br>
         <br>
    
    
  
  


А вот иupdate действиеuser_controller

def update
    @user = User.find(params[:id])
    @user.update_attributes(params[:user])
    redirect_to @user
end

Форма и обновление выглядят так, как будто работают отлично, но когда я отправляю эту форму с установленным флажком send_email или send_text, атрибуты модели пользователя (send_email, send_text) не изменяются на false

 proflux30 мая 2013 г., 21:26
так какой у тебя вопрос?
 user215838230 мая 2013 г., 21:31
это не работает лол. извините, я забыл опубликовать это, форма и обновление работают отлично, но когда я отправляю эту форму с установленным флажком send_email или send_text, атрибуты модели пользователя (send_email, send_text) не изменяются на false

Ответы на вопрос(3)

<% @batches.each do |batch| %>
  <div class="name_list<%=cycle('odd', 'even')%>"><li>
    <label><%= check_box_tag "send_sms[batch_ids][]",  batch.id,false,:class=>'right' %>
   <div class="att_list_names"> <%= batch.full_name %></div> </label>
   </li>  </div>
  <% end %>
Решение Вопроса

когда ваша форма воздействует на объект, просто оставьте все лишние вещи вне тега следующим образом:

<div class="field">
    <%= f.label "Get Email" %> <br>
    <%= f.check_box :send_email %> <br>
</div>

И все должно начать работать так, как вы ожидаете. Флажки будут отмечены, если атрибут имеет значение true, и наоборот, проверенное состояние при отправке формы будет влиять на атрибут. Остальная часть вашего кода в порядке.

 user215838230 мая 2013 г., 22:03
Спасибо, очень просто. Я думаю, что я запутался от чтения других решений этой проблемы

Дополнительная информация о формах и обновлении базы данных

Действительно, последний ответ правильный: достаточно использовать синтаксис form_for, и Rails сделает ассоциацию непроверенной: false / checked: true для вас.

<div class="field">
    <%= f.label "Get Email" %> <br>
    <%= f.check_box :send_email %> <br>
</div>

У меня была такая же проблема даже с этим синтаксисом. Дело в том, что серверконсоль вернула меняUnpermitted parameter: checkbox_value : don 'не забудьте обновить требуемые / разрешенные параметры для помещения вparams ! И в моем случае:

# ***_controller.rb
      private
        def operator_params
          params.require(:operator).permit(:name, :website, :checkbox_value, :global)
        end

Ваш ответ на вопрос