您好我的创建控制器中有以下内容:
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?谢谢
答案 0 :(得分:1)
find_requestable
方法的第三行,首先检查name
是否为blank
。试一试。
if !name.blank? && name =~ /(.+)_id$/
更新:在评论中回答:
我能想到的另一件事是你的一个参数有Undefined
作为它的值,这导致return $1.classify.constantize.find(value)
抛出。你能看一下通过网络发送的HTTP标头和POST参数吗?