表单上的rails嵌套资源生成错误的json

时间:2016-11-14 04:19:13

标签: ruby-on-rails json nested

我在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

0 个答案:

没有答案