私はこの奇妙なエラーを私は理解していません。Ruby初期化されていない定数名エラー
<%= 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>
:私は新しい洞窟を作成するために提供し、私のユーザーのshowメソッドで
class Cave < ActiveRecord::Base
belongs_to :user
end
、:
class User < ActiveRecord::Base
validates_presence_of :name, :email
has_many :caves
end
、以下のように定義関連するモデルCave
:私は以下のように定義モデルUser
を持っています
ページを表示すると、次のエラーが表示されます。
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 :caves
の代わりにhas_many :cave
が現れていることです(ユーザーのshow.html.erbのフォームで変更してもページは正常に表示されます)。私は、ここで関連するすべての質問をここや他の場所で読んだと信じていますが、解決策のどれもが適用されないようです。
ありがとうございました!あなたはこれを取り除いてどれくらい安心しているか分かりません。この種のエラーが頻繁に発生しますか? – Antoine
通常、Railsは変態や正しい複数形または単数形の単語を見つけるのにはかなり良いです...それらの中に "v"が付いた単語は、通常よりも頻繁にそれを混乱させるようです。たとえば、 "loves"のデフォルトの単数形は "lofe"です。 – Veraticus
当時とまったく同じエラーです。私はルビーには新しく、特に私がモデルの一部をフランス語にしようとしているので、これを見守っていきます。 – Antoine