2012-03-12 42 views
0

我正在開發1應用程序在軌道3與MongoDB(MongoMapper),其中我需要關聯三個類稱爲用戶,空間和地址,並希望相應地獲取數據,但我得到這個錯誤,我是新的MongoMapper,不知道如何解決它,PLZ幫助我!Rails 3與Mongo Mapper

NoMethodError in Space#index 

    Showing C:/Users/bacancy1/Documents/Aptana Studio 3 Workspace/Jigar/awesome_app/app/views/space/index.html.erb where line #9 raised: 

    undefined method `street' for nil:NilClass 

關聯模型是

1> address.rb

class Address 
    include MongoMapper::Document 
    validates_presence_of :street, :city, :state, :zip, :neighborhood, :country_id 
    key :street, String 
    key :city, String 
    key :state, String 
    key :zip, String 
    key :neighborhood, String 
    key :country_id, String 
    belongs_to :user , :class_name =>'User' 
    belongs_to :space , :class_name =>'Spaces' 
    end 

2> space.rb

class Space 
    include MongoMapper::Document 

    validates_presence_of :name, :occupancy, :additional_services, :start_time, :end_time 

    key :name, String 
    key :is_indoor, Boolean 
    key :is_outdoor, Boolean 
    key :photo, Binary 
    key :summary, String 
    key :occupancy, String 
    key :additional_services, String 
    key :start_time, String 
    key :end_time, String 
    key :status, Integer 
    key :created_on, DateTime 
    key :address_id, String 
    key :user_id, String 


    one :address , :class_name =>'Address' 
    belongs_to :user 

3> user.rb

class User 
    include MongoMapper::Document   
    #plugin MongoMapper::Devise 

    validates_presence_of :firstname, :lastname, :email, :password 
    validates_format_of :email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i 
    validates_uniqueness_of :email 
    validates_confirmation_of :password 

    #key :_id, String 
    key :firstname, String 
    key :lastname, String 
    key :email, String 
    key :password, String 
    key :confirm, String 
    key :is_admin, Boolean 

    one :address , :in => :addresses, :class_name =>'Address' 
    validates_associated :addresses 



    many :spaces, :in => :spaces, :class_name => 'Space' 
    validates_associated :spaces 

    #devise :database_authenticatable, :confirmable, :lockable, 
    #  :recoverable, :rememberable, :registerable, :trackable, 
    #  :timeoutable, :validatable, :token_authenticatable 

    #attr_accessible :email, :password, :password_confirmation 

end 

    #devise :database_authenticatable, :confirmable, :lockable, 
    #  :recoverable, :rememberable, :registerable, :trackable, 
    #  :timeoutable, :validatable, :token_authenticatable 

    #attr_accessible :email, :password, :password_confirmation 

end 

4> index.html.erb(查看文件,通過它我想檢索數據)

<!-- detail part --> 
<div class="main_wrapper_box"> 
    <div class="sub_detail_box"> 
     <div class="title_box"> 
      <div class="title_text"> 
       <%= @space.name %> 
      </div> 
      <div class="title_sub_text"> 
       <h2> <%= @space.address.street %>,<%= @space.address.city %>,<%= @space.address.state %>,<%= @space.address.zip %></h2> 
      </div> 
     </div> 
     <!-- start detail --> 
     <div class="detail_box"> 
      <!-- 1 location --> 
      <div class="comman_sub_detail_box"> 
       <!-- left side --> 
       <div class="fea_lan_leftside"> 
        <!-- start tab control --> 
        <div class="container"> 
         <ul class="menu"> 
          <li id="activityfeed" class="active"> 
           Overview 
          </li> 
          <li id="verify"> 
           Highlights 
          </li> 
          <li id="claims"> 
           Map 
          </li> 
          <li id="confirm"> 
           Albums 
          </li> 
         </ul>.....(continue....) 

回答

0

您的address.rb一個錯字:

belongs_to :space , :class_name =>'Spaces' 

你不是已經稱爲類Spaces。你確實有一個叫Space的課程。它應該是:

belongs_to :space , :class_name =>'Space' 

這可能會或可能不會解決您的問題。

+0

哎呀!雅培這是錯字錯誤,但糾正後,我得到了同樣的錯誤:/ :( – 2012-03-13 05:04:36

+0

我認爲問題是有關聯因爲當我改變我的index.html.erb這樣的代碼: <%if if ?.address.nil%> \t <%@ space.address.city.each做|城市|%> \t <%= city %> <% end %> <% end %> 它通常解析沒有任何錯誤,但並沒有表現出城市的名稱或者,所以我在協會的某個地方犯了錯誤,不知道該怎麼辦! – 2012-03-13 06:19:12