rails 3 - 帮助返回零

时间:2010-11-13 18:46:28

标签: ruby-on-rails ruby-on-rails-3

您好我的创建控制器中有以下内容:

  def create
    @requestable = find_requestable

    if !@requestable.nil?
     . .. 

然后:

  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没有发回nil?谢谢

1 个答案:

答案 0 :(得分:1)

find_requestable方法的第三行,首先检查name是否为blank。试一试。

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

更新:在评论中回答:

我能想到的另一件事是你的一个参数有Undefined作为它的值,这导致return $1.classify.constantize.find(value)抛出。你能看一下通过网络发送的HTTP标头和POST参数吗?