提前抱歉提出一个简单的问题。已经搜索了几个小时,但还没有解决问题。
我在用户控制器中定义了2个变量
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@record = Record.joins(:user).where(:user_id => 2).select('records.id, records.wins')
end
end
在我的.html.erb文件中,我想显示该用户的胜利。代码如下:
<%= @user.name %>
<%= @record.wins %>
用户的名字显示没有问题,但是对于获胜,我得到“用户#的NoMethodError显示。未定义的方法`赢了'#
表模式如下所示:
create_table "records", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.integer "wins"
t.bigint "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_records_on_user_id"
end
create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
如果您的关联看起来像User
has_many
Record
然后是用户
#=> controller
@user = User.find(params[:id])
视图中的
<%= @user.name %>
#=> wins for this user
<% @user.records.each do |user_record| %>
<% user_record.wins %>
<% end %>
你在控制器中不需要这一行
@record = Record.joins(:user).where(:user_id => 2).select('records.id, records.wins')