Ruby on rails Rails 4检查表+;验证

Ruby on rails Rails 4检查表+;验证,ruby-on-rails,validation,activerecord,ruby-on-rails-4,model,Ruby On Rails,Validation,Activerecord,Ruby On Rails 4,Model,我有一个名为Directive的模型,它属于用户模型,Directive模型有5个字段(字符串)。我为每个字段创建了一个表单,每个字段有5个复选框,每个复选框都有一个数值 到目前为止,一切顺利。问题是当我试图提交表单时。我选中的复选框不会在出现错误时保持不变,并且不会提交它们。我的情人都是空的 不过,它可以与单选按钮配合使用 我的表格示例: <%= form_for(@directive, url: dashboard_directives_path(:type => params[

我有一个名为Directive的模型,它属于用户模型,Directive模型有5个字段(字符串)。我为每个字段创建了一个表单,每个字段有5个复选框,每个复选框都有一个数值

到目前为止,一切顺利。问题是当我试图提交表单时。我选中的复选框不会在出现错误时保持不变,并且不会提交它们。我的情人都是空的

不过,它可以与单选按钮配合使用

我的表格示例:

<%= form_for(@directive, url: dashboard_directives_path(:type => params[:type]), html: {method: "post", class: "form-horizontal"}) do |f| %>

  <%= f.check_box :place, "1" %>
  <%= f.check_box :place, "2" %>
  <%= f.check_box :place, "3" %>
  ...
  <%= f.check_box :field2, "1" %>
  ...

<% end %>
我的控制器中的参数:

private

def directive_params
  if params[:directive].present?
    params.require(:directive).permit(:place, :field2, :field3, :field4, :field5)
  else
    params.fetch(:directive, {})
  end
end
模型:

class Directive < ActiveRecord::Base
  belongs_to :members, :class_name => 'Member', :foreign_key => 'member_id'
  validates :place, :field2, :field3, :field4, :field5, presence: true
end
class指令'Member',:foreign\u key=>'Member\u id'
验证:place、:field2、:field3、:field4、:field5、presence:true
结束

更改
指令参数
如下:

注意:将'place'作为数组传递,也必须作为最后一个参数

def directive_params 
  if params[:directive].present? 
    params.require(:directive).permit( :field2, :field3, :field4, :field5, :place => []) 
  else 
    params.fetch(:directive, {}) 
  end 
end
将“place”作为数组传递

在您的模型
指令中
通过添加
serialize:place
将其序列化


我还必须更改复选框,使其看起来像这样:

<%= f.check_box :place, {:multiple => true}, "1", nil %>
true},“1”,无%>

由于这需要大量调试,让我们在chat chat.stackoverflow.com/rooms/48530/ror上讨论一下
<%= f.check_box :place, {:multiple => true}, "1", nil %>