2017-05-13 43 views
0

我試圖驗證我的表單輸入在課程模型,但第二我嘗試驗證:存在真正與任何形式的輸入我收到下面的錯誤。與地圖集合有關。Rails驗證拋出一個未定義的方法錯誤地圖與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 

回答

相關問題