0

를 사용하여 개체를 만드는 방법 :내가 다형성 연결을 사용하여 개체를 만들하지만이처럼 나에게 오류를 반환 레일을 다형성 협회

여기
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 
+0

'@의 popular_school'을보십시오. 대신 '@popular_school = PopularSchool.new (params)'여야합니다. – Deep

+0

@Deep params를 다시 정의해야합니까? 그것은 다형성이며 다른 매개 변수를 제출하지 않아도 자동으로 작동합니다. 설명해 주시겠습니까? – LearningROR

+0

매개 변수를 정의하지 않습니다. 'params'는 당신이보기로부터받는 데이터입니다. 따라서이 데이터를 사용하여 새 객체를 만들고이를 데이터베이스에 저장합니다. 'index' 액션에서 생성 한'@ popular_school'는 다른'action'에서 더 이상 사용할 수 없으며 뷰에서만 사용할 수 있습니다. – Deep

답변

2

어디서든 @popular_school 변수를 정의하지 않았습니다. 그래서 NoMethodError (undefined method new for nil:NilClass): 오류가 발생합니다.

는 create` 행동`에 nil``에 PopularSchool.create(your_params)

+0

그것은 말합니다 :'ActiveModel :: ForbiddenAttributesError (ActiveModel :: ForbiddenAttributesError) : ' – LearningROR

+0

당신이'popularSchool'을 만들기 위해 제출하는'form'을 어디에서 보여줄 수 있습니까? –

+0

'<% = form_for ([: admin, @popular_school]) do | f | %><% = text_field_tag ​​: 검색, "", id : "search-txt", 클래스 : "자동 완성 입력 양식 컨트롤"%>

<% = hidden_field_tag ​​"id", "", value : ""%> "%"hidden_field_tag ​​"type", ""값 : ""%> <% = f.submit "제출", : class => "btn btn-md btn-info"%> <% end %>' – LearningROR