首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用与上下文相关的数据创建多个记录

使用与上下文相关的数据创建多个记录
EN

Stack Overflow用户
提问于 2015-07-21 17:15:42
回答 1查看 11关注 0票数 0

应用程序是会计分录的一种形式,在这种特殊情况下,会计分录调整。目标行为是用户选择一系列帐户来编辑余额;然而,在实践中,应用程序为每个选定的帐户创建新条目,然后映射和和生成余额值。

因此,控制器从以前的表单中调用选定的帐户。

代码语言:javascript
复制
    @bilancinos = Bilancino.find(params[:bilancino_ids])

视图调用每个帐户。

代码语言:javascript
复制
<%= form_tag create_multiple_bilancinos_path, :method => :put  do %>
  <% @bilancinos.each do |bilancino| %>
    <%= fields_for "bilancinos[]", bilancino do |f| %>

这对提取所选帐户是很好的。

代码语言:javascript
复制
<%= f.hidden_field :operativo_id, :value => bilancino.operativo_id %>

但数量

代码语言:javascript
复制
<%= f.text_field :amount, :class => "text-right" %>

是从源@bilancinos和呈现的HTML派生的。

代码语言:javascript
复制
<input class="text-right" id="bilancinos_1457_amount" name="bilancinos[1457][amount]" size="30" type="text" value="8325.22" />

试图编辑现有的记录,这是错误的,自然导致undefined methodstringify_keys‘为“1457:String`”。create_multiple操作定义为

代码语言:javascript
复制
@bilancinos = Bilancino.create(params[:bilancinos].keys, params[:bilancinos].values).reject {|p| p.errors.empty? }

我怀疑我表单的语法是问题所在。

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 08:30:06

解决方法如下(在这里保持跟踪,因为大多数答案都与创建/保存多个子记录有关;这是直接创建,但具有上下文)。

第一个控制器操作调用上下文确定的记录。

代码语言:javascript
复制
@bilancinos = Bilancino.find(params[:bilancino_ids])

当第二个控制器操作创建记录时

代码语言:javascript
复制
params[:new_bilancinos].each do |keys, values|
  b = Bilancino.create(values)
end

表单是根据上下文创建的。

代码语言:javascript
复制
<%= form_tag create_multiple_bilancinos_path, :method => :put  do %>
  <% @bilancinos.each do |bilancino| %>

而这些值是通过以下语法生成的

代码语言:javascript
复制
    <%= hidden_field_tag "new_bilancinos[#{bilancino.id}][cdg_id]", bilancino.cdg_id %>
    <%= text_field_tag "new_bilancinos[#{bilancino.id}][amount]", "0", class: "text-right" %>
    <%= select_tag "new_bilancinos[#{bilancino.id}][natura_id]", options_from_collection_for_select(Natura.order("id DESC").all, "id", "nome", {:selected => 1 }) %>

其中,bilancino.id实际上只是作为rails处理占位符的唯一键集。使用自己的ID创建新的bilancino记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31545538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档