사용자와 키를 관리하는 매우 간단한 응용 프로그램을 만들고 있습니다. 키는 사용자의 중첩 된 속성입니다. 나는 RailsCast #196에 의해 영감을 받았습니다.중첩 된 매개 변수를 빌드 메서드에 전달하는 올바른 방법은 무엇입니까? (Ruby on Rails 5)
이class User < ApplicationRecord
#Validations
---
#Relations
has_many :keys, :dependent => :destroy
accepts_nested_attributes_for :keys, :reject_if => :all_blank, :allow_destroy => true
end
class Key < ApplicationRecord
#Validations
---
#Relations
belongs_to :user
end
사용자 컨트롤러는 강력한 매개 변수를 포함 : 모델은 다음과 같이 정의된다
def user_params
params.require(:user).permit(:nom, :prenom, :section, :email, :password, keys_attributes: [:id, :secteur, :clef])
end
를 그리고 각각의 새로운 사용자 (사용자 컨트롤러) 1 키 초기화 할 :
# GET /users/new
def new
@user = User.new
key = @user.keys.build({secteur: "Tous", clef: "ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678"})
end
을
사용자의 키를 초기화하는 데 여러 가지 방법을 시도했지만 매개 변수를 전달하는 방법을 알 수 없습니다. 사용자는 항상 생성되지만 첫 번째 키는 생성되지 않습니다. 오류 메시지는 발행되지 않습니다.
그냥 key = @ user.keys.build를 수행 한 다음 중첩 된 양식에서 임의 키를 생성하는 메서드 값과 함께 숨겨진 필드를 추가 할 수 있습니다. – luissimo