将复选框数组插入数据库

2023-12-05

我陷入困境,虽然我的数组参数被捕获,但无法将其插入数据库。我没有收到未经允许的参数错误或任何错误。它只是在插入数据库时​​无法识别数组。

我想做的:捕获任何已选中的框,并将数据插入为separate行存入数据库。

这是我所拥有的:

/订阅/类别/2

<div>
    <%= simple_form_for @subscription do |f| %>
        <div class="form-inputs">
            <%= f.hidden_field :dashboard_id, value: 1 %>
            <%= f.hidden_field :category_id, value: @category.id %>
            <%= f.collection_check_boxes :feed_id, Feed.where("category_id = ?", @category), :id, :name %>
        </div>
      <div class="form-actions">
        <%= f.button :submit %>
      </div>        
    <% end %>
</div>

类别控制器

  def show
    @subscription = Subscription.new
  end

订阅控制器

def subscription_params
  params.require(:subscription).permit(:dashboard_id, :category_id, :feed_id => [])
end

提交后,控制台输出如下:

Processing by SubscriptionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"Zw2VkwujDLQjV4krjPF8N1EiYo5L/XOrUwedlHCvwB0=", "subscription"=>{"dashboard_id"=>"1", "category_id"=>"2", "feed_id"=>["3", "4", ""]}, "commit"=>"Create Subscription"}
   (0.2ms)  BEGIN
  SQL (1.6ms)  INSERT INTO `subscriptions` (`category_id`, `created_at`, `dashboard_id`, `updated_at`) VALUES (2, '2014-01-06 02:17:41', 1, '2014-01-06 02:17:41')
   (116.6ms)  COMMIT
Redirected to http://localhost:3000/subscriptions/3
Completed 302 Found in 173ms (ActiveRecord: 119.3ms)

两个问题:

  1. 为什么我的 feed_id 数组有一个额外的“”? (只有 2 个可能的复选框)
  2. 为什么我不捕获数组以将其插入数据库?

Thanks!


您的数组未插入数据库的原因是 Active Record 目前不支持 Postgresql 数组类型。为了将它们作为单独的行插入,需要将复选框表示为模型的单独实例。

可能是类似...

Category < ActiveRecord::Base
    has_many: feeds
    ...
end  

Feed < ActiveRecord::Base  
    belongs_to: category
    ...
end  

现在这也意味着您需要使用 form_tag 帮助器而不是 form_for。这将允许您创建由多个单独对象组成的复合表单。插入这个仅意味着迭代并插入每个对象;给你单独的行。希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将复选框数组插入数据库 的相关文章

随机推荐

  • Swift 中的重复字符串

    我的任务是创建一个函数 该函数接受字符串和 int 两个参数 该函数将返回一个字符串 该字符串重复字符串参数 int 的次数 这是我想到的 但出现错误 顺便说一句 这是我在工作时在 CodeCardio 上做的 所以我无法在 Xcode 中
  • ATL CString 到字符数组的转换

    我想转换一个CString into a char 有人告诉我该怎么做吗 我的代码是这样的 CString strCamIP1 T char g acCameraip 16 17 strCamIP1 theApp GetProfileStr
  • 我如何知道 getScript Ajax 调用何时完成?

    我正在使用 jQuerygetScript将 X 数量的 js 文件加载到我的页面中 每个 JS 页面都有一个 AJAX 调用 用于从数据库获取数据 我正在使用 done方法上getScript查看所有文件何时加载 但我需要等到所有 AJA
  • Rails:重命名控制器和相应的模型

    有没有一种简单的方法可以重命名我的应用程序中的控制器和模型以及相应代码中的所有实例 我正在使用 textmate 这是否像使用替换功能并将 Post 一词替换为 Report 一样简单 您需要更改名称控制器以及相关的Model Views
  • Graphviz/Dot - 如何用独特的颜色标记树上的所有叶子?

    我有一个将图形打印为 dot 文件的脚本 我想用独特的颜色突出显示不同程度的所有顶点 Graphviz 可以吗 所以 我对以下内容感兴趣 For each i degree vertex use color i 作为一个特例 如何用独特的颜
  • 从 Windows 窗体到 WPF [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我已经有很长时间的经验了Windows 窗体开发人员 但现在是时候搬到WPF因为一个新的 WPF 项目即将到来 而我只有很短的准备时间来准备学习 W
  • Grails GORM:如何创建复合主键并将其用于表关系?

    我有两个表 其中一个 旧表 A 有两个应用作复合外键的字段 另一个 新表 B 应使用复合主键作为复合外键each row A has one row B关系 我如何用 GORM 来描述这些表 到目前为止 我已经能够创建一个反映旧表的域类 A
  • Python从数据中删除异常值

    我有一个数据框如下 ID Value A 70 A 80 B 75 C 10 B 50 A 1000 C 60 B 2000 我想按 ID 对这些数据进行分组 从分组数据中删除异常值 我们从箱线图中看到的异常值 然后计算平均值 So far
  • iPhone NSDate 例如。下周五

    我想创建一个函数来得出下周五的日期 但我没有计划如何去做 有人给我一个好的提示吗 例如 使用 NSDate 获取当前日期 然后使用 NSCalendar 中的 components gt fromDate 获取 NSDateComponen
  • 如何使用 Database First 创建模型后设置由实体框架中的数据库生成的 id 键

    我在 Web API 项目中使用实体框架 我已经从现有数据库 MySQL 创建了类和模型 因此我基本上使用 EF DbContextGenerator 从 EDMX 模型生成类 读取操作工作正常 但我现在想要开始添加功能以将记录添加到数据库
  • 未从 Github 语言统计中排除的路径

    我已经读过相关的 SO 线程here and here 以及 Github 语言学家手动超控 但我似乎无法从语言统计中排除一些顶级目录 在当前的最新版本中 这个仓库显示了 HTML 代码的优势 单击 HTML 详细信息 会列出两个 HTML
  • 当基础数据更改时,GridView 内容不会更新

    所以我有一个包含两个控件的 ASP NET 页面 a GridView显示来自 a 的行SqlDataSource 并且用户可以在其中选择一行 a DetailsView用户可以在其中看到and edit所选行的值 The DetailsV
  • 将 CharFilter 与 Lucene 4.3.0 的 StandardAnalyzer 结合使用

    我正在尝试添加一个CharFilter to my StandardAnalyzer 我的目的是从我索引的所有文本中删除标点符号 例如 我想要一个前缀查询 pf 来匹配 P F Changs 或 zara s 来匹配 Zara s 看来这里
  • 如何在 Visual Studio 2008 中使用 .a lib 文件?

    所以我将一些 C C 库编译成 a 文件 图书馆是FFmpeg 52 任何人都可以为我提供有关如何在 Visual Studio 2008 中使用它的详细说明 如何将其链接到 VS 以便编译器找到它等等 这可能有用 从 MinGW 静态库
  • Google BigQuery 中的查询表出现错误“访问被拒绝:BigQuery BigQuery:通配文件模式时权限被拒绝”。

    我是 Google BigQuery 的新手 如果我的问题有点简单 请原谅我 我先澄清一下这个问题的背景 Account1 创建一个存储桶 多区域 和外部表 Account1可以成功查询外部表数据 授予 Account2 以下项目角色 Ac
  • 在Python中从视频源创建视频缩略图

    我有一个视频文件的 url 我想生成每个视频源 url 的缩略图 我正在使用 Django 我的应用程序这样做 1 Crawl the some webpage 2 Extract all the video link from it 3
  • 对数组中的值从小到大进行排序/排序

    我有一个这样的公式 ArrayFormula sort INDEX B 1 B 10 MATCH E1 A 1 A 10 0 in columns A B a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10 a
  • 应用程序上下文加载两次

    我正在使用 Tomcat 7 和 Eclipse 使用 Struts 3 编写一个 Web 应用程序 当我启动 Tomcat 时 上下文似乎被加载了两次 日志文件显示 applicationContext xml 被读取了两次 我在 Tom
  • Apache Beam - 跳过管道步骤

    我正在使用 Apache Beam 设置一个由 2 个主要步骤组成的管道 使用 Beam Transform 来转换数据 将转换后的数据加载到 BigQuery 管道设置如下所示 myPCollection org apache beam
  • 将复选框数组插入数据库

    我陷入困境 虽然我的数组参数被捕获 但无法将其插入数据库 我没有收到未经允许的参数错误或任何错误 它只是在插入数据库时 无法识别数组 我想做的 捕获任何已选中的框 并将数据插入为separate行存入数据库 这是我所拥有的 订阅 类别 2