0

関連するモデルが2つあります。

class Store < ActiveRecord::Base
  attr_accessible :name, :subdomain
  belongs_to  :theme
end

class Theme < ActiveRecord::Base
  attr_accessible :name, :description, :screenshot_attributes
  has_many  :stores
end

次の方法でテーマの名前にアクセスしようとすると、問題はすべて正常に機能します。

<% @stores.each do |store| %>
  <tr>
    <td><%= link_to store.subdomain, store %></td>
    <td><%= store.name %></td>
    <td><%= store.theme.name %></td>
    <td><%= link_to 'Go to Store', root_url(subdomain: store.subdomain) %></td>
    <td><%= link_to 'Edit', [:edit, store] %></td>
    <td><%= link_to 'Destroy', store, confirm: 'Are you sure?', method: :delete %></td>
  </tr>
<% end %>

これはエラーが発生する行です。

    <td><%= store.theme.name %></td>

そしてこれはメッセージです:

    undefined method `name' for nil:NilClass

テーマの名前の値にアクセスする正しい方法は何ですか?

ありがとうございました!

4

1 に答える 1

3

store.themeがnilであるという理由だけで。便利な機能は検査です。もし、するなら:

<%= store.inspect %>

theme_idがnilであることがわかります。

于 2012-12-13T19:36:13.687 に答える