这是我第一次提出问题所以请一个人轻松一下:-p
我正在关注使用partials渲染集合的http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials(第3.4.5节渲染集合)上的示例。代码看起来很简单,但显然我遗漏了一些东西。
models / expert.rb包含以下行:
attr_accessible :name
experts_controller.rb在索引方法中包含以下行:
@experts = Expert.all
views / experts / index.html.erb包含以下行:
<%= render :partial => "expert", :collection => @experts %>
views / experts / _expert.html.erb包含:
<%= expert.name %>
在浏览器中查看索引页面后,出现以下错误:
NoMethodError in Experts#index
undefined method `name' for nil:NilClass
我已经在这个工作了一个小时而且完全被难过了: - /我错过了什么小事?
---的澄清 ---
正在运行'&lt;%= debug @experts%&gt;'在index.html.erb中生成以下输出:
- !ruby/object:Expert
attributes:
id: 1
name: Bob Smith
slug: bob-smith
created_at: '2012-03-11 18:37:11.791118'
updated_at: '2012-03-11 18:55:58.179629'
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false
- !ruby/object:Expert
attributes:
id: 2
name: Steve Kamp
slug: steve-kamp
created_at: !!null
updated_at: !!null
changed_attributes: {}
previously_changed: {}
attributes_cache: {}
marked_for_destruction: false
destroyed: false
readonly: false
new_record: false
答案 0 :(得分:1)
异常几乎肯定意味着没有专家,所以@experts
是一个空数组。你有没有创建任何专家记录?
另外,就像你知道的那样,以你正在做的方式呈现一组对象是一个很好的捷径:
render @experts