使用 Rails 中的表单批量更新对象

2023-12-31

我有一个人物模型和一个报价模型。每个人都可以有许多与其相关的引言,而这些引言又可以与作者、文本、网址等内容相关联。实际上,实际上只有一个人拥有引用对象,但所有人都可能拥有一个。

我正在尝试在报价上使用一个非常简单的批量适度工具。例如,用户可以输入引号,管理员可以获取特定人员的所有引号(但就像在实践中一样,只有一个人会拥有它们)并选中一个复选框,将批准的布尔值设置为 0 或 1。报价实际上是显示的,它们是按此字段过滤的。

我真的很困惑试图创建一个批量更新所有这些的表单。我得到了显示所有内容的表格,如下所示:

<% form_for :quotes, :html => { :method => :put }, :url => {:controller => "quote", :action => "bulk_update", }  do |quote_form| %>
   <% @person.quotes.each do |quote| %>
<p>
   <% fields_for "quotes[id][]", quote  do |fields| %>
           Text....
           <%= fields.check_box :approved %><br><br>

  <% end %>
</p>

<% end %>
<%= submit_tag 'Update' %>
<% end %>

我的批量更新控制器中有一个非常通用的东西,它基本上就像一个普通的更新控制器。我不知道该放什么进去。我可以尝试添加我可能应该添加的所有引号,但我不知道如何获取该变量,因为我是从 Person 视图等中完成所有这些操作的。控制器是这样的:

def bulk_update
@quote = Quote.find(params[:id])
end

我想我对应该在其中的 ID 以及应该传入的内容感到困惑。人员 ID 是否应该成为其中的一部分?就像我说的,我并不关心从技术上讲所有引用是否都显示在该页面上,它们不需要按用户排序。

我得到的参数如下所示:

"quotes"=>{"id"=>{"6"=>{"approved"=>"0"}, ..

但它抱怨没有 ID 就找不到报价。我不关心 ID,因为我想批量更新所有这些。看起来这个特定的结构会映射几个 id,但也许(可能)我必须更改我的控制器来弥补这一点,但不确定如何。当我尝试删除哈希的引号并仅将“id”=>{“6”=>{“approved”=>“0”}, .. 作为我的参数时,它也不起作用。

编辑:我找到了一个名为 update_all 的语句,但我不知道如何有选择地传递我需要的内容......


我发现以下方法对于错误处理也很灵活:

def bulk_update
  quotes = params["quotes"]["id"]
  quotes.each do |quote_id,quote_attrs|
    quote = Quote.find(quote_id)
    quote.update_attributes(quote_attrs)
    # Other logic of interest like error handling
    # . . .
  end
  # Don't forget to render or redirect to the proper view
end

Update

执行此操作的正确方法是将更新逻辑移至模型:

class QuotesController < ApplicationController
  def bulk_update
    errors = Quote.bulk_update(params["quotes"]["id"])
    # Other logic of interest like error handling
    # . . . 
    # Don't forget to render or redirect to the proper view
  end
end

class Quote < ActiveRecord::Base
  def bulk_update
    errors = {}
    quotes.each do |quote_id,quote_attrs|
      quote = Quote.find(quote_id)
      unless quote.update_attributes(quote_attrs)
        errors[quote_id] = qoute.errors
      end 
    end
    errors
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Rails 中的表单批量更新对象 的相关文章

  • Rails 3:如何获取特定时区今天的日期?

    为了获得今天的日期 我这样做 Date today gt Fri 20 May 2011 我想获取特定时区的今天日期 例如 Melbourne 我的设置中有以下设置application rb config time zone Melbou
  • MacOS 每秒唤醒次数错误

    构建 Rails 应用程序 ruby 2 4 0p0 Rails 5 1 4 并使用我的 Macbook Air MacOS High Sierra 10 13 2 进行本地测试 我不断遇到此问题 过去 241 秒内有 45001 次唤醒
  • 为什么 Rails 托管在 VM 上时会缓存视图文件并共享 Samba 上的代码库

    我有以下设置 我的本地计算机 OS X 上的代码作为 Samba 共享共享 在 Parallels 中运行的 Ubuntu VM 安装共享 在开发模式下运行 Rails 2 1 通过 Mongrel WEBrick 或乘客 如果我对视图进行
  • 如何运行使用 Rails 模型的 Ruby 任务?

    我有一个带有一些基本模型的 Rails 应用程序 该网站显示从其他来源检索到的数据 因此 我需要编写一个 Ruby 脚本来在数据库中创建新实例 我知道我可以使用测试挂钩来做到这一点 但我不确定这在这里是否有意义 我不确定这个任务应该是什么样
  • Rails 4 ExecJS::Listings#index 中的程序错误

    将 JavaScript 添加到我的网络应用程序后 我现在收到以下错误 ExecJS ProgramError in Listings index stdin 16 5 error unexpected else else in Users
  • Ruby 电子表格 gem,如何居中对齐数字

    我在用着http spreadsheet rubyforge org http spreadsheet rubyforge org生成电子表格 但我遇到了一些问题 我正在打开现有工作簿并向其中添加数据 我已经设法在某种程度上使数字格式正常工
  • -bash:pg_dump:找不到命令

    我正在尝试在本地为我的 Rails 应用程序提取一个生产数据库 我本地的 postgres 版本太低 所以我需要从 9 4 1 更新到 Postgresql 9 6 5 我通过 Homebrew 安装了 Postgres 9 6 6 如下所
  • Rails Partial (Rails 3, HAML) 任意慢

    我使用的是 Rails 3 0 1 HAML 0 3 22 和 Mongrel 1 1 5 MongoMapper 不是 AR 我正在渲染一个列表 每个列表项都是它自己的部分 每次页面渲染其中一个列表项部分时 渲染时间都会延长近 100 倍
  • 程序“gem”可以在以下软件包中找到

    我正在 Virtual Box Ubuntu 13 10 上安装 Ruby on Rails 以下是步骤 ruby v gt 程序 ruby 可以在以下软件包中找到 尝试 sudo apt get install 来源 我的帐户 gt 好的
  • 从 ActiveRecord 获取表名

    I used ActiveRecord Base set table name在动态创建的 ActiveRecord 类上设置我的表名称 现在我需要知道稍后如何获得该值 api 文档没有提及如何执行此操作 另外 我无法从 ActiveRec
  • 部署到 Heroku 时使用 Rails Secrets.yml 且无需将密钥暴露给公共存储库的分步说明

    我正在使用 Rails 4 1 1 和 ruby 2 0 0 我目前已经忽略了 github 的 gitignore 中的 Secrets yml 文件 秘密 yml development secret key base numb3r57
  • 如何检查水豚中的复选框?

    我正在使用 Rspec 和水豚 我怎样才能写一个步骤来检查checkbox 我试过了check按价值但它找不到我的checkbox 我不知道该怎么做 因为我实际上有相同的 ID 但值不同 这是代码
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • 为什么 Rails 5 将“索引”更改为“外键”?

    如果你在 Rails 4 中有这个 t references event index true 现在你可以使用foreign key代替index在 Rails 5 中 我不太明白为什么他们决定这样做 因为功能保持不变 您添加的是索引 而不
  • Memcachier 达到缓存限制时 Heroku 请求超时

    我使用 Memcachier Dalli 作为客户端 将 Rails 应用程序部署到 Heroku 我正在使用免费插件 提供 25 MB 缓存 我们开始收到来自heroku的请求超时 经过调试 我们发现手动刷新Memcachier解决了问题
  • Rails 3 - “无法解析 Yaml”

    我不知道我做错了什么 我尝试运行 rails c 但它只是给了我一个错误 10 分钟前它还在工作 C Ruby192 lib ruby 1 9 1 psych rb 148 in parse couldn t parse YAML at l
  • 在特定页面上执行 javascript 的正确“Rails”方式

    我试图在特定页面上运行 javascript 而我唯一的解决方案似乎是反模式 我有controller js内部生成的assets javascripts 我在用着gem jquery turbolinks 我的代码类似于以下内容 docu
  • 在 CircleCI 中设置 Elasticsearch 和 Ruby on Rails

    我正在尝试在 Rails 应用程序中使用 Elasticsearch 设置 CircleCI 我想已经配置了镜像 但是如何在 CI 中连接到它 到目前为止我已经尝试过 https github com elastic elasticsear
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • 有时您可能需要重新启动 Webrick 才能看到所做的更改,这是否正确?

    我听 Kevin Skoglund lynda com 说 养成在开发过程中频繁重新启动 Webrick 的习惯是一个很好的习惯 虽然通常您不需要重新启动 Webrick 来查看更改 但他暗示在某些特殊情况下可能需要这样做 有谁知道这些情况

随机推荐

  • 路径路由:React 应用程序的应用程序负载均衡器

    我正在尝试在 AWS 应用程序负载均衡器中创建路径路由 Example apple mango com vault去instance1端口 80 和 nginx 将其路由到 var html reactApp1 build apple ma
  • 在基于 django 类的通用视图 CreateView 中设置表单字段

    我正在使用 django 的CreateView将图像添加到书中 我将书的 id 作为 url 中的参数传递给基于类的视图 表单字段 例如book and language不会在模板上呈现 而是通过书籍 ID 获得 views py cla
  • 设置默认 WebAPI 格式化程序

    我们使用 WebAPI 来模拟遗留系统的处理 因此 我们希望默认响应格式化程序是 XmlFormatter 而不是 JsonFormatter 原因是某些现有的服务调用不提供 Accept HTTP 标头字段 我可以通过从 Formatte
  • RTSP/RTMP 视频流客户端 iOS [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个开源解决方案 库来将 RTSP RTMP 流式传输到 iOS 应用程序 我需要构建一个连接到媒
  • ipywidgets 小部件值未更改

    我正在尝试从在 Python 3 6 中运行 Jupyter Notebooks 的 Microsoft Azure Notebooks 中的 ipywidgets 小部件获取输出 但是 当我获取新值时 它不会返回新值 这也适用于从未被其他
  • PhoneGap IOS 应用程序大小

    我使用 eclipse 和 xcode 4 5 创建了适用于 android 和 IOS 的phonegap 应用程序 Android应用程序大小为650KB iOS应用程序的大小是9MB 我创建了空的phonegap应用程序 刚刚在终端上
  • 位运算与

    这是一个leetcode问题 给定一个数字数组 nums 其中恰好有两个元素仅出现一次 而所有其他元素恰好出现两次 找出只出现一次的两个元素 例如 给定 nums 1 2 1 3 2 5 返回 3 5 我的代码是 class Solutio
  • 使用bash,如何删除特定目录中所有文件的扩展名?

    我想保留这些文件但删除它们的扩展名 这些文件的扩展名不同 我的最终目标是删除它们的所有扩展并将它们更改为我选择的一个扩展 我已经把第二部分写下来了 到目前为止我的代码 bin bash echo n Enter the directory
  • 寻找在过程中保持大小并清除旧元素的数据结构

    Usecase维护最后 n 个访问过的 URL 的列表 其中 n 是固定数字 当新的 URL 添加到列表中时 旧的 URL 会自动删除 以使其保持在 n 个元素 要求数据结构需要按时间排序 如果接受 Comparator 应该没问题 你需要
  • 如何遍历 N 叉树

    我的树 节点类 import java util ArrayList import java util List public class Node
  • 如果未安装应用程序,则重定向到应用程序商店

    场景是用户将获得他的电子邮件的链接 如果用户单击链接 如果应用程序已安装 则应用程序应打开 如果应用程序未安装 则应重定向到应用程序商店 我已经看到了深度链接的实现 但我相信它也需要在后端进行更多的实现 任何人都可以帮忙解决这个问题吗 如果
  • 如何在 Webpack 中使用 Tree Shaking?

    我刚刚使用 Angular 2 版本 rc 2 应用程序 使用 Typescript 更新到 webpack 2 1 0 beta 15 但我想知道如何使用树摇动功能 我读到它应该 开箱即用 但我仍然有一个 1 7Mb 的捆绑包用于一个非常
  • 我在哪里可以下载 Facebook 的 PHP 源代码转换器 HipHop [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 在哪里可以下载 PHP 版 HipH
  • 是否可以列出数据库中的所有外键?

    如何列出 sql server 数据库中的所有 F 我使用这个语句 看起来效果很好 SELECT RC CONSTRAINT NAME FK Name KF TABLE SCHEMA FK Schema KF TABLE NAME FK T
  • 带有电子邮件域的 AutoCompleteTextView android

    所以我的应用程序中有一个自动完成文本视图字段 我希望用户输入他的电子邮件地址 现在 为了帮助他更快地打字并且不犯错误 我想在打字时向他建议最常见的电子邮件域服务器 我将该控件与该数组一起使用 String arraymails gmail
  • 如何更改选项卡主机的默认颜色

    我使用的是2 2 SDK版本 我使用 TabHost 以选项卡视图格式显示活动 当我在手机中安装应用程序 版本2 2 1 时 选项卡主机颜色已更改为黄色 即使我也不给 TabHost 任何颜色 我不知道为什么颜色改变了 当我在模拟器中运行相
  • Android WebView UTF-8 不显示

    我有一个 webview 并尝试将简单的 UTF 8 文本加载到其中 mWebView loadData 將賦予他們的傳教工作標示為 text html UTF 8 但 WebView 显示 ANSI ASCII 垃圾 显然是编码问题 但是
  • Django 开发服务器重新加载时间太长

    自从我升级到 OSX Lion 以来 这一直是我的问题 每当我更改 Django 项目中的文件时 运行服务器重新加载 需要相当长的时间才能再次开始服务 即使在新创建的 Django 1 4 项目中也会发生这种情况 不过在 Snow Leop
  • 如何在 Python 2.7 中创建计时器?

    我目前正在使用 Pyglet 库编写一个打砖块克隆程序 我想制作一个计时器 为游戏的 奖励 即更长的桨 更快的桨移动 更大的球 计时长达 20 秒 我一直在尽我所能地在互联网上挖掘 但找不到答案 import threading bonus
  • 使用 Rails 中的表单批量更新对象

    我有一个人物模型和一个报价模型 每个人都可以有许多与其相关的引言 而这些引言又可以与作者 文本 网址等内容相关联 实际上 实际上只有一个人拥有引用对象 但所有人都可能拥有一个 我正在尝试在报价上使用一个非常简单的批量适度工具 例如 用户可以