我正在尝试调试特定问题,我安装了gem better_errors
。我得到一个漂亮的错误页面,它有一个嵌入式REPL,允许我检查当前请求的各种元素的值。
这是生成错误的网址:
http://localhost:3000/nodes/new?parent_id=16
问题是,当我尝试检查params的值时,我得到了这个错误:
>> params[:parent_id]
!! #<NameError: undefined local variable or method `params' for #<Node:0x007fc4db2cd678>>
>> node_params
!! #<NameError: undefined local variable or method `node_params' for #<Node:0x007fc4db2cd678>>
>> node_params[:parent_id]
!! #<NameError: undefined local variable or method `node_params' for #<Node:0x007fc4db2cd678>>
>> params
!! #<NameError: undefined local variable or method `params' for #<Node:0x007fc4db2cd678>>
>>
尽管下面的“请求信息”部分告诉我:
请求信息
Request parameters
{"parent_id"=>"16", "action"=>"new", "controller"=>"nodes"}
REPL确实有效,可以看出:
>> Node
=> Node(id: integer, family_tree_id: integer, created_at: datetime, updated_at: datetime, name: string, ancestry: string, ancestry_depth: integer, max_tree_depth: integer)
>> Node.first
=> #<Node id: 7, family_tree_id: 2, created_at: "2015-01-17 18:22:13", updated_at: "2015-01-17 18:24:50", name: "Self", ancestry: nil, ancestry_depth: 0, max_tree_depth: 0>
>>
不确定是否重要,但这是原始请求中的错误消息:
NoMethodError at /nodes/new
undefined method `parent_id' for #<Node:0x007fc4db2cd678>
答案 0 :(得分:2)
这意味着您在self
作为Node
对象的方法内部,而不是在控制器方法内部。查看左侧的堆栈跟踪,以查看当前正在执行代码的方法(以及对象)。