How to get blank checkboxes to pass as false to params
checkbox, ruby-on-rails, ruby-on-rails-4
Solution
You need to place a hidden field tag before each checkbox with an empty value, for example:
<%= hidden_field_tag :basketball, '' %>
<%= check_box_tag :basketball, checked = true %> Basketball</br></br>
Then the form is aware it needs to populate that field with an empty value if nothing is selected.
Problem
I have a form that is an update user form where several of the elements are checkboxes. I want true to pass to the params if checked (this is working) and false to pass to the params if unchecked (not working). The unchecked items are not even being sent to the params. How can i make an unchecked item pass through as false? Form ``` <%= form_tag user_url(@user), class: "form-signin", method: 'patch' do %> <h4>Please confirm your email. We'll only email you if you have notifications.</h4> <%= email_field_tag :email, current_user.email %> <h4>Want to be notified when someone needs a player? Choose which sports below.</h4> <%= check_box_tag :basketball, checked = true %> Basketball</br></br> <%= check_box_tag :indoor_volleyball, checked = true %> Indoor Volleyball</br></br> <%= check_box_tag :beach_volleyball, checked = true %> Beach Volleyball</br></br> <%= check_box_tag :soccer, checked = true %> Soccer</br></br> <%= check_box_tag :flag_football, checked = true %> Flag Football</br></br> <%= check_box_tag :hockey, checked = true %> Hockey</br></br> <%= check_box_tag :kickball, checked = true %> Kickball</br></br> <%= check_box_tag :softball, checked = true %> Softball <%= hidden_field_tag :user_id, :value => current_user.id %> <%= hidden_field_tag :user, :value => current_user %> <div> </br> <%= submit_tag "Submit", class:"btn btn-large btn-success" %> </div> ``` Controller ``` def update respond_to do |format| if @user.update(update_params) format.html { redirect_to @user, notice: 'Updates were successful.' } format.json { head :no_content } else format.html { render action: 'edit' } format.json { render json: @user.errors, status: :unprocessable_entity } end end end def update_params params.permit(:email, :soccer, :softball, :beach_volleyball, :indoor_volleyball, :flag_football, :basketball, :hockey, :kickball) end ```