嵌套字段未提交Rails 4

时间:2013-10-12 08:03:45

标签: ruby-on-rails nested-forms

我想尝试在Rails 4中实现一个简单的嵌套模型形式。这可能非常简单,但是无法理解。

所以我有一个编辑视图,在其中我创建了嵌套字段:

    <%= f.fields_for :bankaccounts do |bankaccount| %>
     <%= render 'bankaccount_fields', :f => bankaccount %>
    <% end %>

这些工作正常,甚至链接:

    <%= link_to_add_association 'add', f, :bankaccounts , :class => "link"%>

工作正常。这些字段在单击时显示。

真正的问题是,当我提交表格时。它不会将参数发送回已经输入到这些添加字段的Web服务器。 (无法在webrick控制台中的任何位置看到它们)表单只提交旧的bankaccount参数:

    "bankaccounts_attributes"=>{"0"=>{"iban"=>"121221", "swift"=>"121212", "id"=>"3"}, "1"=>{"iban"=>"33333", "swift"=>"33333", "id"=>"9"}, "2"=>{"iban"=>"121212", "swift"=>"211212", "id"=>"10"} 

以上属性应包含四个银行帐户。

FWIW:Turbolinks也被禁用。

编辑:这是来自bankaccount_fields partial的代码:

 <div id="tilit">
    <div class="area-form">
       <div class="col">
          <div class="box-row">
            <label for="iban" class="label">Iban</label>
            <div class="input-row no-italic">
              <%= f.text_field :iban, :id => "iban", :class => "input-text" %>
            </div>
          </div>
        </div>
    <div class="col">
      <div class="box-row">
         <label for="swift" class="label">Swift</label>
         <div class="input-row no-italic">
           <%= f.text_field :swift, :id => "swift", :class => "input-text" %>
         </div>
      </div>
    </div>
 </div>

pic of inspect element

编辑:调试器输出reg。参数:

(rdb:2)@_params {“utf8”=&gt;“✓”,“_ method”=&gt;“patch”,“authenticity_token”=&gt;“181xsndllcPmpvpMaDi70IXh8SpaSYxs0eiSo19qwfI =”,“producer”=&gt; {“name”=&gt;“Anne”,“ RH_nro“=&gt;”“,”ytunnus“=&gt;”“,”prepaymentpercentage“=&gt;”“,”streetaddress“=&gt;”“,”zip“=&gt;”“,”city“=&gt; “”,“www”=&gt;“”,“bankaccounts_attributes”=&gt; {“0”=&gt; {“iban”=&gt;“13123123”,“swift”=&gt;“121212”,“id”= &gt;“3”},“1”=&gt; {“iban”=&gt;“33333”,“swift”=&gt;“33333”,“id”=&gt;“9”},“2”=&gt; ; {“iban”=&gt;“121212”,“swift”=&gt;“211212”,“id”=&gt;“10”}}},“commit”=&gt;“TALLENNA”,“action”=&gt; ;“更新”,“控制器”=&gt;“生产者”,“id”=&gt;“54”}

应该再包含一个bankaccount_attributes记录,但只包含未动态添加的记录。

我现在已经好几个小时了,所以任何帮助都会非常感激。

如果问题形成不好,也很抱歉,这是我的第一个:)

2 个答案:

答案 0 :(得分:1)

我发现我的申请存在问题,如果不知道是否有人发现这个问题有用了。

我猜你已经在HTML表格中写了你的form_for(这就是我所做的)。如果是这样,浏览器会生成不一致的DOM。如果您动态生成表单输入,除非您通过表单选择器选择它,否则它不会将其放在表单中。因此,解决方案将表单放在HTML表格之外。

答案 1 :(得分:0)

你的强力指标是什么?控制器像?

对于嵌套属性,它们应该是这样的:

def params
    params.require(:form_for_variable).permit(bankaccounts_attributes: [:iban, :swift])
end

此外,您需要在提交表单的模型中加入accepts_nested_attributes_for :bankaccounts