를 사용하여 개체를 만드는 방법 :내가 다형성 연결을 사용하여 개체를 만들하지만이처럼 나에게 오류를 반환 레일을 다형성 협회
여기NoMethodError (undefined method `new' for nil:NilClass):
는 PARAMS 있습니다
Parameters: {"utf8"=>"✓", "authenticity_token"=>"TAQdqSTXAFCrq6yZBUnjVXe7IsPqmxuLh/qM/2QvKaVvsfP
/Sy6VNF7H38IzOg8aMj39t6HR+aZLLtyj8uMzyw==", "search"=>"Newport-Mesa Unified
School District", "id"=>"32", "type"=>"PrivateSchool", "commit"=>"Submit"}
다음
입니다 모델 :
class PrivateSchool < ActiveRecord::Base
has_many :popular_schools, as: :resource, :dependent => :destroy
end
class PopularSchool < ActiveRecord::Base
belongs_to :resource, polymorphic: true
end
class School < ActiveRecord::Base
has_many :popular_schools, as: :resource, :dependent => :destroy
end
컨트롤러 코드 :
def index
@popular_school = PopularSchool.new
@popular_schools = PopularSchool.all
end
def create
@popular_school.new.save
respond_to do |format|
format.html { redirect_to root_path }
format.json { head :no_content }
format.js
end
end
'@의 popular_school'을보십시오. 대신 '@popular_school = PopularSchool.new (params)'여야합니다. – Deep
@Deep params를 다시 정의해야합니까? 그것은 다형성이며 다른 매개 변수를 제출하지 않아도 자동으로 작동합니다. 설명해 주시겠습니까? – LearningROR
매개 변수를 정의하지 않습니다. 'params'는 당신이보기로부터받는 데이터입니다. 따라서이 데이터를 사용하여 새 객체를 만들고이를 데이터베이스에 저장합니다. 'index' 액션에서 생성 한'@ popular_school'는 다른'action'에서 더 이상 사용할 수 없으며 뷰에서만 사용할 수 있습니다. – Deep