社員の新規登録時に、同じ画面で
資格も複数行登録したいです。
親:社員
子:資格
色々と参考にしながら、accepts_nested_attributes_forを使い
親子関係のモデルを同時に登録するところまで出来ました。
子モデル側のフィールドに、親モデル名_idを持つことで
自動で親のキーをセットしてくれますが、
この他にも親のデータをセットしたい場合、どこに何を記述するのが定石でしょうか?
例えば、受注伝票なら
受注伝票キーは自動でセットされますが
受注伝票番号も同じタイミングでセットしたい場合です。
今回の場合ですと、
viewで入力された社員名(emp_name)を
子のemp_nameにもセットして登録したいです。
宜しくお願い致します。
社員モデル
ruby
1class Employee < ApplicationRecord 2 3 has_many :license, dependent: :delete_all 4 5 accepts_nested_attributes_for :license, allow_destroy: true 6 7 validates :emp_name, presence: true 8end 9
社員コントローラ
ruby
1class EmployeesController < ApplicationController 2 before_action :set_employee, only: [:show, :edit, :update, :destroy] 3 4 # POST /employees 5 # POST /employees.json 6 def create 7 @employee = Employee.new(employee_params) 8 9 10 respond_to do |format| 11 if @employee.save 12 format.html { redirect_to @employee, notice: 'Employee was successfully created.' } 13 format.json { render :show, status: :created, location: @employee } 14 else 15 format.html { render :new } 16 format.json { render json: @employee.errors, status: :unprocessable_entity } 17 end 18 end 19 end 20 21 22 private 23 # Use callbacks to share common setup or constraints between actions. 24 def set_employee 25 @employee = Employee.find(params[:id]) 26 end 27 28 # Never trust parameters from the scary internet, only allow the white list through. 29 def employee_params 30 params.require(:employee).permit( 31 :emp_code, 32 :emp_name, 33 :retire_date, 34 lisence_attributes:[:id, :emp_code, :emp_name, :_destroy]) 35 end 36end 37
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/14 22:40