Вложенный параметр Rails 5 разрешен false - PullRequest
0 голосов
/ 03 мая 2018

Вложенные API-интерфейсы Rails 5 разрешены false

class TimeSheet < ApplicationRecord 
  has_many :job_times, inverse_of: :time_sheet
  accepts_nested_attributes_for :job_times, :allow_destroy => true 
end

class JobTime < ApplicationRecord
  belongs_to :time_sheet, optional: true
end

Контроллер

def create
  puts "Job time  #{params.dig(:job_times)}"   
  @time_sheet = TimeSheet.create!(time_sheet_params)

  if @time_sheet.save
    render json: @time_sheet, status: :created, location: @time_sheet
  else
    render json: @time_sheet.errors, status: :unprocessable_entity
  end
end

def time_sheet_params
  params.require(:time_sheet).permit(:first_name, :job_date, 
     job_times_attributes:  [:job_id, :job_department, :job_category, 
         :job_time, :is_overtime ]) 
end

Параметры:

{"first_name"=>"GG", "job_date"=>"2018-05-22T00:50:19.000Z", "job_times"=>[{"job_id"=>"18001", "job_department"=>"CAD", "job_category"=>"Finishing", "job_time"=>"5", "is_overtime"=>""}, {"job_id"=>"18032", "job_department"=>"test", "job_category"=>"Finishing", "job_time"=>"2", "is_overtime"=>""}], "time_sheet"=>{"first_name"=>"GG", "job_date"=>"2018-05-22T00:50:19.000Z"}}

Job time  [<ActionController::Parameters {"job_id"=>"18001", "job_department"=>"CAD", "job_category"=>"Finishing", "job_time"=>"5", "is_overtime"=>""} permitted: false>, <ActionController::Parameters {"job_id"=>"18032", "job_department"=>"test", "job_category"=>"Finishing", "job_time"=>"2", "is_overtime"=>""} permitted: false>]

Спасибо за помощь.

1 Ответ

0 голосов
/ 03 мая 2018

Неправильно указаны ваши параметры, возможно, проблема в представлении формы.

Вы отправляете "job_times" => [...], но вы должны отправлять "job_times_attributes" => [...].

Убедитесь, что в вашей форме вы вкладываете поле job_times в помощник fields_for. Например, если form является вашим объектом формы, то вы должны делать что-то вроде:

<%= form.fields_for :job_times do |subform| %>
<%= subform.text_field :job_category %>
<% end %>

Или, если вы создаете свои формы вручную, используйте job_times_attributes вместо job_times

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...