我想做这样的事情:
@profiles
#(I think in Java, so I have declared an @profiles variable there! I know it's probably wrong!)
@users.each do |user|
profile = Profile.find(params[user.id])
@profiles.add(profile)
end
用户和个人资料具有一对一的关系。
用户有一个个人资料, 个人资料属于用户
答案 0 :(得分:6)
您需要初始化数组。
@profiles = []
@users.each do |user|
profile = Profile.find(params[user.id])
@profiles << profile if profile
end
如果你有关系,你应该只能说:
@profiles = []
@users.each do |user|
profile = user.profile
@profiles << profile if profile
end
答案 1 :(得分:1)
find
已经返回了一个集合。
然而,在这种情况下,看起来你应该有一个成文关系:
class User
has_one :profile
end
class Profile
belongs_to :user
end
答案 2 :(得分:1)
如果你的模型中有这个
class User
has_one :profile
end
class Profile
belongs_to :user
end
这在您的个人资料迁移中
t.integer :user_id
您可以找到这样的个人资料
@profiles = Profile.all
然后在你的观点中
<% @profiles.each do |profile| %>
<%= profile.user.name %>
<%end%>
<强>更新强>
如果你有
where('user_id LIKE?',“%#{search}%”)
试试这个型号/ user.rb。
def self.search(search)
if search
where('name LIKE ? ', "%#{search}%" )
else
scoped
end
end
在控制器中:
@users = User.search(params [:search])
然后在你的观点中
<% @users.each do |user| %>
<%= user.profile.name %>
<%end%>
答案 3 :(得分:0)
只需执行以下操作:
替换
@profiles.add(profile)
与
@profiles << profile
&lt;&lt; operator将右侧的元素添加到左侧的数组中。