2010-11-13 3 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 is blank. Дайте это выстрел.

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

UPDATE: Ответ на комментарий:

Единственная вещь, которую я могу думать о том, что один из ваших Params имеет Undefined в качестве значения, которое вызывает return $1.classify.constantize.find(value) бросить. Можете ли вы взглянуть на заголовки HTTP и параметры POST, которые отправляются через провод?

+0

хорошая идея, но такая же ошибка – AnApprentice

+0

В вашем методе, какая линия 133? – John

+0

return $ 1.classify.constantize.find (value) – AnApprentice

Смежные вопросы