わからないこの奇妙なエラーがあります。User
私は次のように定義されたモデルを持っています:
class User < ActiveRecord::Base
validates_presence_of :name, :email
has_many :caves
end
そして、関連するモデルは次のCave
ように定義されます。
class Cave < ActiveRecord::Base
belongs_to :user
end
ユーザーのshowメソッドで、新しい洞窟を作成することを提案します。
<%= form_for([@user, @user.caves.build]) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
しかし、ページを表示すると、次のエラーが発生します。
NameError in Users#show
Showing E:/Vinisync/app/views/users/show.html.erb where line #19 raised:
uninitialized constant User::Cafe
Extracted source (around line #19):
16: </p>
17:
18: <h2>Add a Cave</h2>
19: <%= form_for([@user, @user.caves.build]) do |f| %>
20: <div class="field">
21: <%= f.label :name %><br />
22: <%= f.text_field :name %>
この「カフェ」がどこから来たのかわかりません。コードのどこにもこの単語はありません。
私が気付いたのは、User.rbで関連付けられている名前を現在のようにhas_many :cave
変更has_many :caves
すると(そしてユーザーのshow.html.erbの形式で変更すると、ページは正常に表示されます。しかし、私の関係は1対多です。したがって、ユーザーでは「洞窟」ではなく「洞窟」と読み替える必要があります。ここSOやその他の場所で関連するすべての質問を読んだと思いますが、どの解決策も当てはまらないようです。