我遇到了零星错误,表面上是因为Rails有时候找不到部分错误。但是,由于错误只在某些情况下出现,我怀疑,然后发现,它背后有一个不同的错误。
我的问题是,是否有人知道在这种情况下识别底层错误的可靠方法?
明显错误:
Rails在响应JSON视图new.json.erb
的请求时出现此错误:
ActionView::Template::Error (Missing partial insightly_contacts/search_result with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :coffee]}. Searched in:
* "/path/to/project/app/views"
由于两个原因,这很奇怪:
有问题的部分是格式为:json
的不;虽然new.json.erb
显然是一个JSON模板,但它会像这样呈现有问题的部分(指定:html
格式):
form_object.possible_insightly_contacts.map { |insightly_contact|
{
id: insightly_contact.id,
html: render(partial: 'insightly_contacts/search_result', locals: { insightly_contact: insightly_contact }, formats: :html)
}
}.to_json.html_safe
备注:
possible_insightly_contacts
返回ActiveRelation。
错误仅在form_object
被赋予特定参数时出现。基本上它需要一个搜索字符串,possible_insightly_contacts
用于构建查询;对'x'的搜索有效,而对'z'的搜索则给出了缺失的部分错误(这些不是占位符,字面上字符串'x'和'z'分别工作/失败!)
我检查了form_object
和possible_insightly_contacts
的结果,并且没有错误 - 请求未因possible_insightly_contacts
的空集而失败,或者意外返回的东西。
潜在错误:
(注意:从某种意义上说这是无关紧要的,关键在于它不是真的是'部分未找到'错误)
潜在的错误是渲染层次结构中的另一部分渲染失败,因为逻辑错误仅发生在某些insightly_contact
个对象中。因此,错误仅发生在某些搜索字符串值上:它们返回了一个对象,该对象由于其持有的某些特定数据而触发了错误。
我的问题:
我应该如何找到潜在的错误?最后,我刚刚浏览了所有模板/部分/模型代码,可以想象从上面的模板中调用,并猜测可能出现的问题。
我希望有一个常规的HTML视图会触发底层模型中的类似错误,以提供适当的回溯,并以这种方式找到问题。
但是服务器控制台中报告的错误和提供的回溯都与此处的实际问题无关。
有没有人遇到/解决了类似的问题?
这是否有规范方法?