2011-07-14 30 views
1

因此,繼續我的活躍資源和活動記錄的冒險我試圖做一個簡單的獲取方法內的活動資源,但每次我嘗試引用該變量,它拋出一個方法未定義的異常。也許最好在代碼中解釋它。(Ruby/Rails)當我試圖引用一個變量時未定義的方法

class UserRequest < ActiveResource::Base 
    self.site = "http://localhost:3008" 


def get_status 
    puts self.status 
    return self.status 
    end 

另一方面的活動記錄由URL,深度和狀態組成。

所以我去通過控制檯作爲一個會,

?> @received = UserRequest.find(10) 
=> #<UserRequest:0x101174e98 @prefix_options={}, @attributes={"user_request"=>#<UserRequest:0x10111ddc8 @prefix_options={}, @attributes={"created_at"=>Thu Jul 14 10:43:32 UTC 2011, "depth"=>583, "updated_at"=>Thu Jul 14 10:43:32 UTC 2011, "url"=>"www.mendi.com", "id"=>10, "status"=>"In queue: not started"}>}> 
>> 
?> 
?> @received.get_status 
NoMethodError: undefined method `status' for #<UserRequest:0x101174e98> 
    from /Library/Ruby/Gems/1.8/gems/activeresource-3.0.9/lib/active_resource/base.rb:1401:in `method_missing' 
    from /Users/shanemoore/Desktop/activeResourceTest/webApps/app/models/user_request.rb:17:in `get_status' 
    from (irb):47 
>> 

看來,當我引用一個ActiveRecord的.STATUS一部分,它在尋找一種方法,而不是我想被帶回的變量.find。服務器端控制檯發生同樣的問題。

2個明確的可能性是我引用變量錯誤的(雖然我打過電話從self.whatever旁白的多種不同的方式)

還是我的類是如何建在活動記錄概念是錯誤的。 (可能這個self.initialise我聽說過)

任何關心幫助嗎?

+0

如果你所有的get_status方法正在做的是返回self.status,你可以直接通過@ received.status來訪問它。沒有必要定義一個單獨的getter方法 –

+0

我沒有在你的模型中看到'status'屬性。添加後你有'rake db:migrate'嗎? – user482594

+0

現在所有的get_status方法正在做的是響應與他變量,但在我完成後,它會張貼結果作爲JSON通過淨:: http – OVERTONE

回答

0

不明白get_status方法的用途。 作爲一個屬性的狀態,你不需要定義該方法,Rails爲你做。 因此@received.status應該工作得很好。

+0

我只想引用當前的變量。當它完成後,我希望它響應一個JSON發佈請求 – OVERTONE

相關問題