在 rails 中使用嵌套表单时出错

getting error while using nested form in rails

我在 rails 中使用嵌套形式,参数进入控制台但未保存到数据库中 table

error : Unpermitted parameter: shyain_rekis

aru_params有错吗?如果有那么是什么错误?

def aru_params
  params.require(:aru).permit(:shyain_rekis_attributes => [:id, :emp_type, :company_leaving_reason, :_destroy])
end

查看:

<%= f.fields_for :shyain_rekis_attributes do |ff| %>
    <tr>
        <td><%= ff.select :emp_type,TShyainTouyouJoshinsho::EMP_TYPE,{}, class: 'form-control' , :disabled => @disabled_field %></td>
        <td><%= ff.text_field :company_leaving_reason, class: 'form-control' , :disabled => @disabled_field %></td>
        <td><%= f.hidden_field :_destroy %>
            <%= link_to '削除' ,'#' , class: " btn btn-xs btn-danger remove_record" %>
        </td>
    </tr>
<% end %>  
Parameters: {"shyain_rekis_attributes"=>{"1555403656594"=> {"shyain_rekis"=>{"emp_type"=>"abc",company_leaving_reason"=>""}, "_destroy"=>"false"}}

我想解决错误并将数据保存到嵌套形式的数据库table

(您可能已经这样做了,但是)要实现您想要的效果,请像这样在控制器中实例化变量:

def new
  @aru = Aru.new
# other stuff...
def edit
  @aru = Aru.find(params[:id])

然后你必须将一个实例传递给父表单标签,所以如果你有一个符号作为参数将它切换到实例,就像这样:

<%= form_for @aru do |f| %>

对于嵌套表单,您不需要使用 _attributes 作为 fields_for 参数

<%= f.fields_for :shyain_rekis do |ff| %>
    <tr>
        <td><%= ff.select :emp_type,TShyainTouyouJoshinsho::EMP_TYPE,{}, class: 'form-control' , :disabled => @disabled_field %></td>
        <td><%= ff.text_field :company_leaving_reason, class: 'form-control' , :disabled => @disabled_field %></td>
        <td>
            <%= ff.hidden_field :_destroy %>
            <%= link_to '削除' ,'#' , class: " btn btn-xs btn-danger remove_record" %>
        </td>
    </tr>
<% end %>  

不要忘记将 _destroy 隐藏字段的范围限定为嵌套表单,否则它不会破坏相关对象。