我有一个人物模型和一个报价模型。每个人都可以有许多与其相关的引言,而这些引言又可以与作者、文本、网址等内容相关联。实际上,实际上只有一个人拥有引用对象,但所有人都可能拥有一个。
我正在尝试在报价上使用一个非常简单的批量适度工具。例如,用户可以输入引号,管理员可以获取特定人员的所有引号(但就像在实践中一样,只有一个人会拥有它们)并选中一个复选框,将批准的布尔值设置为 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 的语句,但我不知道如何有选择地传递我需要的内容......