我想尝试在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>
编辑:调试器输出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记录,但只包含未动态添加的记录。
我现在已经好几个小时了,所以任何帮助都会非常感激。
如果问题形成不好,也很抱歉,这是我的第一个:)
答案 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