2010-11-13 82 views
1

你好,我已經在我的創建控制器如下:軌道3 - 幫助返回一個零

def create 
    @requestable = find_requestable 

    if [email protected]? 
    . .. 

然後:

def find_requestable 
    params.each do |name, value| 
     if name =~ /(.+)_id$/ 
     return $1.classify.constantize.find(value) 
     end 
    end 
    nil 
    end 

這個工程發現當find_requestable發回paratemter,但如果它是不是它不發回一個導致一切錯誤的NIL:

NameError (uninitialized constant Undefined): 
    app/controllers/request_threads_controller.rb:133:in `find_requestable' 
    app/controllers/request_threads_controller.rb:131:in `each' 
    app/controllers/request_threads_controller.rb:131:in `find_requestable' 
    app/controllers/request_threads_controller.rb:52:in `create' 
    app/middleware/flash_session_cookie_middleware.rb:14:in `call' 

爲什麼不find_requestable發回零?謝謝

回答

1

你的find_requestable方法的第三行,首先檢查name是否爲blank。給那一槍。

if !name.blank? && name =~ /(.+)_id$/ 

UPDATE:答案在註釋:

我能想到的唯一的另一件事是,你則params的一個具有Undefined爲它的價值,這是造成return $1.classify.constantize.find(value)扔了。你可以看看通過電線發送的HTTP頭信息和POST參數嗎?

+0

不錯的主意,但同樣的錯誤 – AnApprentice 2010-11-13 18:52:31

+0

在你的方法,哪一行是133? – John 2010-11-13 18:54:19

+0

return $ 1.classify.constantize.find(value) – AnApprentice 2010-11-13 18:56:45