schedule
モデルへのRailsサーバーへのAPI POSTリクエストを作成しています。私のアプリでは、リクエストはapi/schedule
にされています。スケジュールhas_many
労働者。私はworker_info
内の情報を抽出し、(:名前と電話労働者が2つの属性を持つ)新しいワーカーオブジェクトを作成したいparamsから属性を抽出し、それをRails 5の別のモデルに保存する方法は?
Started POST "/api/schedules" for 127.0.0.1 at 2017-05-25 09:57:49 -0700
Processing by SchedulesController#create as */*
Parameters: {"date"=>"2017-05-26T02:00:00.000Z", "user_id"=>1, "worker_info"=>{"name"=>"Hello", "phone"=>"123-456-7890"}, "sched
ule"=>{"date"=>"2017-05-26T02:00:00.000Z", "user_id"=>1}}
Completed 500 Internal Server Error in 21ms (ActiveRecord: 0.7ms)
:そのポスト要求内では、パラメータがこの(レールからログをコピー)のようになります。このような何か:
//schedule controller
def create
@schedule = Schedule.new(schedule_params)
@worker = Worker.new(worker_params) #get the parameters
@worker.save #save the newly created worker object
if @schedule.save
render json: @schedule
else
render json: @schedule, status: :unprocessable_entity
end
end
...
def schedule_params
params.require(:schedule).permit(:date, :user_id, :worker_info)
end
def worker_params
params.permit(:worker_info)
end
リクエストメソッドが(リアクトから)次のようになります。
今return fetch(`api/schedules`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
date: date,
user_id: 1,
worker_info: {name: 'Hello', phone: '123-456-7890'}
})
...
、現在のコードと、それは新しいスケジュールとnil
名前を持つ労働者を作成し、nil
電話。
はどのようにして与えられたパラメータでapi/schedules
への要求を行うと、worker_info
を抽出name
とphone
をつかむと、Worker
モデルにそれを保存するためのRailsのを持つことができますか?
私はRailsにはaccept_nested_attributes_for
と呼ばれるものがあることを知っていますが、私は多くの問題を抱えていました。私は手動でやりたいと思っています。どのようにこれを手動で行うことができますか?このようなworker_params
を更新使用して
@Iggyをあなたは_Strong Parameters_についての詳細を読むことができます[here](http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters)は、あなたに 'require'と' permit'のより良い理解を与えるでしょう。 「スケジュールがどのようにオブジェクトとして表示されるのか」についてはわかりませんでしたが、私はあなたのコードをもっと見る必要があります。 – Gerry