0

因此,我在带有 PostgreSQL 的 Rails 4 中进行了以下设置

# migration
create_table :custom_category_groups do |t|
  t.string :name
  t.string :content_types, array: true, default: []
end

# controller
class CustomCategoryController < ApplicationController
  # ...
  def update
    @custom_category_group = CustomCategoryGroup.new(custom_category_group_params)
    if @custom_category_group.update(custom_category_group_params)
      # ...
    end
  end

private
  def custom_category_group_params
    params.require(:custom_category_group).permit(:name, content_types: [])
  end
end

# view
= form_for @custom_category_group do |f|
  = f.collection_check_boxes :content_types, %w(interviews testimonials blogs).map { |ct| [ ct.titleize, ct ] }, :last, :first

当我保存自定义类别组时,出现以下错误:

TypeError - can't cast Array

当我查看日志时,我看到正在发出以下 DB 语句:

UPDATE "custom_category_groups" SET "content_types" = $1, "updated_at" = $2
 WHERE "custom_category_groups"."id" = 2  [[nil, ["interviews", ""]],
 ["updated_at", Mon, 26 Aug 2013 12:15:53 UTC +00:00]]

如您所见,Rails 不知何故无法解析 content_types 的正确名称(子句nil后的大括号中的)。WHERE

真正奇怪的事情:如果我只是重新加载页面并再次提交表单(当浏览器询问时)我,保存工作!????

4

0 回答 0