2013-06-06 24 views
6

Merhaba ben bu hatayı karşı karşıyayım neyin neden olduğunu bu yüzden cant rakam dışarı raylar tamamen yeni otanımsız yöntem 'map': NilClass, bunun nedeni nedir?

benim newBook.html.erb

<html> 
    <head> 
     <title> new Book </title> 
    </head> 
    <body> 
     <h1><%= @hello_message %></h1> 
     <h1>Add new book</h1> 
     <%= form_tag :action => 'create' %> 
     <p> 
      <label for="book_title">Title</label>: 
      <%= text_field 'book', 'title' %> 
     </p> 
     <p> 
      <label for="book_price">Price</label>: 
      <%= text_field 'book', 'price' %> 
     </p> 
     <p> 
      <label for="book_subject">Subject</label>: 
      <%= collection_select(:book,:subject_id,@subjects,:id,:name) %> 
     </p> 
     <p> 
      <label for="book_description">Description</label> 
      <br/> 
      <%= text_area 'book', 'description' %> 
     </p> 
     <%= submit_tag "Create" %> 
     <%= end_form_tag %> 
     <%= link_to 'Back', {:action => 'list'} %> 
    </body> 
</html> 

kitabım modeli: book.rb

class Book < ActiveRecord::Base 
    attr_accessible :title, :price,:description , :created_at 
    belongs_to :subject 
    validates_presence_of :title 
    validates_numericality_of :price, :message=>"Error Message" 
end 

benim konu modeli: subject.rb

class Subject < ActiveRecord::Base 
    attr_accessible :name 
    has_many :book 

end 

Yığın izleme:

actionpack (3.2.13) lib/action_view/helpers/form_options_helper.rb:364:in `options_from_collection_for_select' 
actionpack (3.2.13) lib/action_view/helpers/form_options_helper.rb:600:in `to_collection_select_tag' 
actionpack (3.2.13) lib/action_view/helpers/form_options_helper.rb:191:in `collection_select' 
app/views/home/newBook.html.erb:19:in `_app_views_home_new_ook_html_erb__299261930_24178164' 
actionpack (3.2.13) lib/action_view/template.rb:145:in `block in render' 
activesupport (3.2.13) lib/active_support/notifications.rb:125:in `instrument' 
actionpack (3.2.13) lib/action_view/template.rb:143:in `render' 
# -- snipped -- 
+2

Bu, RoR ise, neden java ile etiketlensin? – fge

+0

Denetleyici kodunuzu yapıştırın. –

+0

@fge Düzeltme geçmişinde [etiket: java] etiketi yok. (?) – Substantial

cevap

14
<%= collection_select(:book,:subject_id,@subjects,:id,:name) %> 

Kişisel @subjects nesne tanımlanmamıştır. Örneğin, bu değişkenin içeriğini belirler Bu sayfayı şey için kontrolör eylem gerekir:

@subjects = Subject.all 

options_from_collection_for_select kaynağına bakın - İlk yaptığı kendisine geçirilen koleksiyonunda bir harita çağrıdır (içinde Sizin durumunuz @subjects).

+0

thanx, null geleceğini biliyordum, ama bilmiyordum Yardımlarınız için –

1
<%= collection_select(:book,:subject_id,Subject.all,:id,:name) %> 
+0

thanx'ten dilediğiniz yere nasıl gelebilirim? –

+1

Kod snippet'leriniz için açıklamalar eklemeye çalışınız. – Matt

+0

** Denetleyicide ** bir koleksiyon oluşturmak için en iyisi, daha sonra bir örnek değişkenindeki görünüme iletin, örn. '@ Subjects'. Doğrudan görünümden bir model aramak Rails'in MVC modelini ihlal ediyor. – Substantial

İlgili konular