我在rails中有一个基本的创建表单,用于资源(shoppingprocess)和嵌套资源(处理)
<%= form_for(shopping_process) do |f| %>
...
<!-- SUB FORM FOR NESTED RESOURCE : PROCESSINGS -->
<%= f.fields_for :processings, @shopping_process.processings.build do |ff| %>
<div>
<%= ff.label :Begleiter %>
<%= ff.select :shopping_list_id, ShoppingList.accessible_by(current_ability).map{ |sl| [sl.user.firstname, sl.id]} , {:prompt => true} %>
</div>
<div>
<%= ff.label :message %>
<%= ff.text_field :message%>
</div>
将发送到接受嵌套资源参数的控制器 params.require(:shopping_process).permit(:user_id,:status,:assigned,:processed,:shopping_list_id,processings_attributes:[:shopping_list_id,:message])
问题是每当我想保存嵌套资源时我都会收到错误。当我检查生成的参数的日志时,我得到了这个
&#34; processings_attributes&#34; =&gt; {&#34; 0&#34; =&gt; {&#34; shopping_list_id&#34; =&gt;&#34; 2&#34;,&#34 ;消息&#34; = GT;&#34;&#34;}}
所以我假设在某个地方发生了额外的嵌套(因为&#34; 0&#34;),但我不知道在哪里以及如何解决它
PS:请注意我使用cancancan所以我的控制器没有&#34; new&#34;的方法,所以我需要在视图中创建嵌套资源。该实例之前不存在,但用户必须能够在此表单中创建新实例
更新
控制器:
params.require(:shopping_process).permit(:user_id, :status, :appointed, :processed, :shopping_list_id, processings_attributes: [ :shopping_list_id, :message ])
模型:
accepts_nested_attributes_for :processings