轨道3 - 帮助返回一个零

问题描述:

你好,我已经在我的创建控制器如下:轨道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发回零?谢谢

你的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