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