我的rails 4应用程序中有一个称为附件的虚拟属性数组。我在模型中将其声明为虚拟属性:
class ModelName
attr_accessor :attachments
我使用validate_presence_of
对此进行验证 validates_presence_of :attachments
附件实际上是页面中的复选框:
<input class="attachments" id="attachments_" name="attachments[]" type="checkbox" value="1">
因为它是一个数组,我在强参数中将其添加为哈希:Source: http://patshaughnessy.net/2014/6/16/a-rule-of-thumb-for-strong-parameters
问题是,我不断收到错误消息,即使我在数组中选中了一个复选框,附件也不能为空。我究竟做错了什么?如果我调试,在模型级别,我看到附件字段为空
我的表格中的代码:
<% (0..4).each do |index| %>
<label class="checkbox-inline reduce_left_margin">
<%= check_box_tag 'attachments[]', model::constant_array[index], false, class: 'attachments' %>
<%= model::constant_array[index][0..2] %>
</label>
<% end %>
强大的参数:
def allow_params
params.require(:model_name).permit(:name,...., :attachments => [:text])
end
解决方案:
我强大的参数不正确,必须按如下方式设置:
def allow_params
params.require(:model_name).permit(:name,...., :attachments => [])
end