tag rails multiple form check html ruby-on-rails ruby forms

html - multiple - Rails: form_for checkbox establecido en true o false si la casilla está marcada o no



rails checkbox tag (3)

Rails hará esto por usted cuando su formulario esté actuando sobre un objeto, simplemente deje todas las cosas adicionales fuera de la etiqueta así:

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

Y todo debería empezar a funcionar como esperas. Las casillas de verificación se marcarán si el atributo es verdadero, y viceversa, el estado marcado cuando envíe el formulario afectará al atributo. El resto de tu código está bien.

Tengo un modelo llamado usuarios que tiene 2 atributos booleanos send_email y send_text . Tengo un formulario que edita el modelo de usuario, y quiero que establezca esos atributos en verdadero / falso dependiendo de si la casilla está marcada / no marcada. Aqui esta mi forma

<%= form_for(@user) do |f| %> <div class="field"> <%= f.label :email %> <br /> <%= f.text_area :email %> <br /> </div> <div class="field"> <%= f.label :cell %> <br /> <%= f.text_area :cell %> <br /> </div> <div class="field"> <%= f.label "Get Email" %> <br /> <%= f.check_box :send_email, {}, true, false %> <br /> </div> <div class="field"> <%= f.label "Get Text" %> <br /> <%= f.check_box :send_text, {}, true, false %> <br /> </div> <div class="actions"> <%= f.submit "Submit", class: "button small radius" %> <%= link_to "go back", @user, class: "button small radius secondary" %> </div> <% end %>

Y aquí está la acción de update del user_controller

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

El formulario y la actualización parecen funcionar perfectamente, pero cuando envío este formulario con el cuadro send_email o send_text marcado, no cambia los atributos del modelo de usuario (send_email, send_text) a falso


Tuve el mismo problema.

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


Más información sobre formularios y actualización de la base de datos.

De hecho, la última respuesta es correcta: usar la sintaxis de form_for es suficiente y Rails hará la asociación sin marcar: false / checked: true para usted.

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

Tuve el mismo problema incluso con esa sintaxis. El hecho es que la consola del servidor me Unpermitted parameter: checkbox_value : ¡no olvide actualizar sus parámetros requeridos / permitidos para poner en params ! Y en mi caso:

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