我有一个表单,它是一个更新用户表单,其中有几个元素是复选框.如果选中,我希望true传递给params(这起作用),如果未选中,则希望false传递给params(不起作用).未判断的项目甚至没有被发送到参数.如何使未判断的项目作为false通过?

类型

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

控制器

  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

推荐答案

您需要在每个复选框前放置一个隐藏的字段标记,该复选框的值为空,例如:

<%= hidden_field_tag :basketball, '' %>
<%= check_box_tag :basketball, checked = true %> Basketball</br></br>

然后表单意识到,如果未 Select 任何内容,则需要使用空值填充该字段.

Ruby-on-rails相关问答推荐

Ruby线程使用互斥处理并发问题

form_with正在try 用错误的路径生成操作

在数组中定位不匹配的索引

DELETE_IF和REJECT的意外行为!方法

合成轨道布局

搜查升级到 4.0.0 和 ActionText::RichText

Rails 7 - 富文本不显示附加的媒体内容

Rails 控制台 - 更新 Gem 后的弃用通知

Ruby Sinatra Web 服务在 localhost:4567 上运行,但不在 IP 上

PostgreSQL 无间隙序列

在 Rails 3.2 中更新多行

Rails - 设计 - 登录时出现错误消息?

控制器规格与请求规格?

在 Epoch 中将 Ruby 时间戳转换为秒数并返回

从 before_action 中排除控制器

可能在rails中有多态has_one关系?

如何将字符串转换为类方法?

如何在 Rails 3 中将多个属性传递给 find_or_create_by?

Ruby 根据属性在数组中查找并返回对象

如何创建一个 ruby​​ Hello 世界?