получение ошибки при использовании вложенной формы в рельсах - PullRequest
1 голос
/ 16 апреля 2019

Я использую вложенную форму в рельсах, параметры поступают в консоль, но не сохраняются в таблицу базы данных

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

view:

<%= 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"}}

Я хочу устранить ошибку и сохранить данные в таблицу базы данных вложенной формы

1 Ответ

0 голосов
/ 16 апреля 2019

(Вы, возможно, уже сделали это, но) Для достижения того, что вы хотите, создайте экземпляр переменной в контроллере следующим образом:

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 во вложенной форме, иначе оно не уничтожит связанный объект.

...