Rails中的集合和部分3

时间:2012-04-22 23:13:50

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

这是我第一次提出问题所以请一个人轻松一下:-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

1 个答案:

答案 0 :(得分:1)

异常几乎肯定意味着没有专家,所以@experts是一个空数组。你有没有创建任何专家记录?

另外,就像你知道的那样,以你正在做的方式呈现一组对象是一个很好的捷径:

render @experts