私はRailsに頭を悩ませようとしていますが、何かが機能し、他の機能が機能しない理由を理解するのに苦労しています
たとえば、2 つのテーブルがあるとします。
クラス ユーザー
table users
email:string
password:string
クラスプロフィール
table profiles
firstname:string
lastname:string
city:string
user_id:integer
これで、各ユーザーには 1 つのプロファイルが必要です。
だから私が持っているモジュールuser.rbで
has_one :profile
そして profile.rb で
belongs_to :user
今私がしたいのは、テーブルに両方のテーブルを表示することだけです
<table>
<tr>
<th>User_ID</th>
<th>Email</th>
<th>Password digest</th>
<th>First Name</th>
<th>Last Name</th>
<th>City</th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.email %></td>
<td><%= user.password %></td>
<td><%= user.profile.firstname %></td>%></td>
<td><%= user.profile.lastname %></td>%></td>
<td><%= user.profile.city %></td>%></td>
</tr>
<% end %>
</table>
インデックスページのあるコントローラーショーがあります
def index
#this works
@users = User.all(:include => :profile)
end
私が見つけたこのコードのスニペットは機能し、テーブルを適切に表示します。
しかし、これを機能させようとして収集/石畳にした他のコードのリストがありますが、それらは機能しません。
したがって、このコードのリストは、def インデックス内にあり、2 つのテーブルを接続するために個別に試行されます。
@users = @users.build_profile() エラーをスローします: nil:NilClass の未定義メソッド `build_profile'
@users = @users.profile スローされるエラー: nil:NilClass の未定義メソッド `profile'
@users = @user.collect { |ユーザー| エラーがスローされます: nil:NilClass の未定義メソッド「collect」
@users = Profile.find(:all) エラーをスローします: #Profile:0x46da5a0 の未定義のメソッド `email'
<% @users.each do |user| %> <tr> <td><%= user.id %></td> <td><%= user.email %></td> <td><%= user.password %></td> <td><%= user.proflie.firstname %></td>
@users = @profile.create_user() エラーをスローします: nil:NilClass の未定義メソッド `create_user'
@users = @users.profiles エラーをスローします: nil:NilClass の未定義のメソッド `profiles'
@users = @user.each { |ユーザー| エラーをスローします: nil:NilClass の未定義メソッド「each」
これらの他のすべてが失敗するのはなぜですか。同様の問題を抱えている他のユーザーでも機能するように見えました (2 つのテーブルを 1 対 0 の関係で接続する)。