2017-05-13 4 views
0

코스 모델에서 양식 입력의 유효성을 검사하려고하지만 두 번째는 유효성 검사를 시도합니다. 모든 양식 입력에 대해 true가 존재 함 아래 오류가 나타납니다. 지도 컬렉션과 관련이 있습니다.레일 검증은 simple_form을 사용하여 정의되지 않은 메소드 오류 맵을 던졌습니다

undefined method `map' for nil:NilClass 

오류가이 양식을 내 양식에 포함시키고 있습니다. 카테고리 맵과 관련이 있습니다. 유효성 검사를하지 않고 모든 과정을 비워두면 코스를 만들었습니다. 나는 모든 것에 진실을 추가했습니다. 모든 데이터 포인트에 사실을 추가했습니다.

validates :course_reference, :title, :course_img_file_name, :category_id, :description, :short_description, :venue, :location_id, :duration_days, :duration_weeks, :start_date, :start_time, :end_date, :max_enrolment, :price, :presence => true 

오류가 발생했습니다. 필자는 각 양식 데이터를 자체적으로 시도하는 것으로 축소했지만, 두 번째 모델에서는 맵 오류가 발생했습니다.

아무도 도와 줄 수 있습니까?

_form.html.erb

<div class="row"> 
     <div class="site-forms"> 
       <div class="col-md-10"> 
       <%= simple_form_for @course do |f| %> 
        <%= f.input :course_reference, placeholder: "Course Reference", required: true, label: false %> 
         <!-- <= f.input :course_img, as: :file, required: true, label: "Please upload a brand image for your course" %><br> --> 
         <span class="btn btn-default btn-file"> 
          <i class="fa fa-cloud-upload fa-lg"></i> Upload Image 
          <%= f.input :course_img, as: :file, required: true, label: false %> 
         </span> Please keep images to 225hx300w for best display settings <br><br> 
        <%= f.input :title, placeholder: "Course Title", required: true, label: "Course Title" %> 
        <%= select_tag(:category_id, options_for_select(@categories), :prompt => "Select Category") %><br><br> 
        <%= f.input :description, as: :wysihtml5, placeholder: "**** NOTE DO NOT USE HEADER 1,2 or 3 TAGS. THIS WILL NOT HELP SEO FOR YOUR COURSE ***", required: true, label: "Description (Please be descriptive about the courses content)" %> 
        <%= f.input :short_description, placeholder: "Please input a short description for this course", required: true %> 
        <%= f.input :venue, placeholder: "Venue full address", required: true, label: false %> 
        <%= select_tag(:location_id, options_for_select(@locations), :prompt => "County") %><br><br> 
        <%= f.input :duration_days, placeholder: "Total amount of days the course is run. Enter 0.5 if course runs for a half day. " , required: true, label: false %> 
        <%= f.input :duration_weeks, placeholder: "How many weeks does the course run", required: true %> 
        <%= f.input :start_date, required: true %> 
        <%= f.input :start_time, required: true %> 
        <%= f.input :end_date, required: true %> 
        <%= f.input :max_enrolment, placeholder: "Course capacity", required: true %> 
        <%= f.input :price, placeholder: "EUR", required: true %> 
        <%= f.button :submit, class: "btn btn-primary" %> 
        <% end %> 
       </div> 
     </div> 
    </div> 

Course.rb

class Course < ActiveRecord::Base 

    validates :course_reference, :presence => true 

    searchkick 

    belongs_to :user 
    belongs_to :category 
    belongs_to :location 
    has_many :subscriptions, dependent: :destroy 
    has_many :comments, dependent: :destroy 

    geocoded_by :venue 
    after_validation :geocode, if: :venue_changed? 

    has_attached_file :course_img, styles: { course_index: "300x300>", course_show: "400x600>", course_search: "100x100" }, default_url: "/images/:style/missing.png" 
    validates_attachment_content_type :course_img, content_type: /\Aimage\/.*\z/ 

    def price_in_cents 
     price*100 
    end 
end 

답변