Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 RubyonRails-用于创建不同索引的简单表单字段_Ruby On Rails 3_Simple Form_Fields For - Fatal编程技术网

Ruby on rails 3 RubyonRails-用于创建不同索引的简单表单字段

Ruby on rails 3 RubyonRails-用于创建不同索引的简单表单字段,ruby-on-rails-3,simple-form,fields-for,Ruby On Rails 3,Simple Form,Fields For,我有一个关于使用simple\u form field\u for方法更新one-to-many fields的问题 我有两个模型,公司和客户,它们有一对多的关系。 我使用的field\u显示客户机,但由于UI原因,我不得不调用它两次。 但出于某种原因,输入字段的索引被赋予了不同的值。下面是我的代码 <%= simple_form_for @company do |f| %> <table> <tr> <td> <%= f

我有一个关于使用
simple\u form field\u for
方法更新
one-to-many fields
的问题

我有两个模型,
公司
客户
,它们有一对多的关系。 我使用的
field\u显示客户机,但由于UI原因,我不得不调用它两次。
但出于某种原因,输入字段的索引被赋予了不同的值。下面是我的代码

<%= simple_form_for @company do |f| %>
<table>
  <tr>
    <td>
    <%= f.input :name, label: 'Company name: ' %>               
    <%= f.simple_fields_for :clients do |client| %>
      <%= client.input :name, label: 'Client names: ' %>               
    <% end %>
    <%= f.input :info, label: 'Company info: ' %>               
    </td> 
    <td class="span2 clients_desc">
    <%= f.simple_fields_for :clients do |client| %>          
      <%= client.input :description, label: 'Client description: ' %>          
    <% end %>
    </td>
  </tr>
</table>
<% end %>

假设我有3个客户机,
输入字段的名称的输出变成

公司[客户属性][0][name]
公司[客户属性][1][name]
公司[客户属性][2][name]

公司[客户属性][3][description]
公司[客户属性][4][description]
公司[客户属性][5][description]


这会导致在存储期间复制客户端。如何解决这个问题?

一个简单的解决方法是“缓存”表单字段,如下所示:

# ...
<%= f.simple_fields_for :clients do |client| %>
  <%= client.input :name, label: 'Client names: ' %>
  <% client_description_input = client.input :description, label: 'Client description: ' %>          
<% end %>
# ...
<%= client_description_input %>
# ...
#。。。
# ...
# ...

为什么要叫它两次?为什么不把它们包装成一个单独的
简单的\u字段\u用于
?这是出于用户界面的原因,我必须在该表中显示一些其他信息,用户界面的原因是什么?你能再解释一下吗?我放在这里的代码不是我代码的完全复制品,UI需要一个表,其中有一列包含一些公司信息以及所有客户的名称。而另一列包含来自所有客户端的其他信息。这是一个奇怪的设计,我知道,但我没有设计它。我已经更新了我的代码,所以它更有意义