Micropost在索引中包含我想要的内容(@ user.micropost.content)。我可以在节目中这样做,但不能在索引中。
我的模特:
class User < ActiveRecord::Base
has_many :microposts
end
class Micropost < ActiveRecord::Base
belongs_to :user
end
我的user_controller.rb:
def index
@users = User.all
end
def show
@user = User.find(params[:id])
@posts = @user.microposts
end
答案 0 :(得分:2)
在用户控制器中尝试使用此代码:
def index
@users = User.includes(:microposts).all
end
在您的索引页面中,您可以使用以下方式显示微博:
<% @user.microposts do |micropost| %>
<p><%= micropost.title%></p>
<% end %>
这将允许您在视图中使用用户的微博,这也是一个很好的做法,因为数据库中微博的查询只会执行一次。
答案 1 :(得分:2)
首先你需要一个little eager loading to avoid N+1 queries
def index
@users = User.includes(:microposts).all
end
然后在视图中你只需正常循环,你就可以访问对象
@users.each do |user|
user.microposts.each do |micropost|
micropost
end
end
答案 2 :(得分:0)
您必须循环浏览@users = User.all
并以这种方式访问每个用户的微博。
def index
@users = User.all
@users.each do |user|
current_users_microposts = user.microposts
# your code here
end
end
不确定您的要求是什么,但您可以创建一个数组并将每组user.microposts
附加到该数组上,以便将所有这些组合在一个变量中。