1

初めて質問するので、気楽に行ってください:-p

パーシャルを使用してコレクションをレンダリングするために、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

私はこれに1時間取り組んでいて、完全に困惑しています:-/私が見逃している小さなことは何ですか?

---明確化---

index.html.erb内で'<%= debug @experts%>'を実行すると、次の出力が生成されます。

- !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
4

1 に答える 1

1

例外はほぼ確実に専門家がいないことを意味し@experts、空の配列も同様です。エキスパートレコードはもう作成しましたか?

また、ご存知のとおり、オブジェクトのコレクションを現在の方法でレンダリングするには、便利なショートカットがあります。

render @experts
于 2012-04-22T23:16:40.360 に答える