0

我的控制器索引操作中有以下四个变量,它们从不同的模型中检索数据,我将它们加入如下:

@forum = Forum.where(:user_id => @users.collect(&:user_id)).all
@poll=Poll.where(:created_by => @users.collect(&:user_id)).all
@article = Article.where(:user_id => @users.collect(&:user_id)).all
@jobpost = Jobplacement.where(:user_id => @users.collect(&:user_id)).all
@post =  @article + @jobpost + @forum + @poll

在视图中,我想遍历@post,所以我写了-@post.reverse.each do | 帖子| 但问题是这篇文章包含来自 4 个不同模型和论坛的数据,文章,jobpost 有 :user_id 列,而 poll 有 created_by 作为 user_id 字段的列名。因为这个 m 得到错误 undefined method `user_id' for #在以下几行中

- if User.find(post.user_id).basic_info or User.find(post.created_by).basic_info
  - if User.find(post.user_id).basic_info.profilephoto?
    = image_tag User.find(post.user_id).basic_info.profilephoto.url(:thumb)

我怎样才能给出条件

- if User.find(post.user_id).basic_info or User.find(post.created_by).basic_info

或者

- if User.find(post.user_id or post.created_by).basic_info
4

1 回答 1

0

这似乎是一件很麻烦的事情。

但这样的事情应该有效:

user_id = post.user_id || post.created_by
if User.find(user_id).basic_info

但是,您真的不应该从您的视图中的循环中进行数据库调用。在控制器和模型中进行所有数据收集会更干净。

于 2012-05-16T08:04:28.070 回答