0

我正在创建一个 twitter 副本,现在我正在尝试从您关注的所有用户那里获取所有帖子,然后将它们显示在主页上。我以前在 PHP 中做过这个,但我是 RoR 的新手,所以我可能试图以错误的方式做这个。

一个用户有很多订阅,一个订阅属于用户

一个用户有很多帖子,一个帖子属于用户

这是我到目前为止所得到的:

session_controller.rb

def get_posts
  @sub = @current_user.subscriptions.first
  Post.where("user_id = ?", @sub.following_id).find_each do |tweet|
    render partial: 'shared/tweet', locals: {tweet: tweet}
  end
end

我知道 .first 只获得第一个订阅,但我想尝试获得一些东西。

主页.html.erb

<table>
    <tr>
        <th>Username</th>
        <th>Tweet</th>
    </tr>
    <%= yield %>
</table>

_tweet.html.erb

<div class="tweet">
    <td>Username here somehow</td>
    <td><%= tweet.content %></td>
</div>

但是现在什么都没有出现在桌子上。那么,我做错了什么?(我做对了吗?)

4

1 回答 1

2

试试这个:

session_controller.rb

def get_posts
  @sub = @current_user.subscriptions.first
  @tweets = Post.where("user_id = ?", @sub.following_id)
end

主页.html.erb

<table>
  <thead>
    <tr>
        <th>Username</th>
        <th>Tweet</th>
    </tr>
  </thead>
  <tbody>
   <% @tweets.each do |tweet| %>
     <%= render 'shared/tweet', tweet: tweet %>
   <% end %>
  </tbody>
</table>

_tweet.html.erb

<tr class="tweet">
    <td><%= tweet.user.name %></td> # Not sure
    <td><%= tweet.content %></td>
</tr>

编辑:

要获取所有订阅的所有推文:

following_ids = @current_user.subscriptions.map(&:following_id)
@tweets = Post.where(user_id: following_ids)
于 2013-05-03T14:54:27.907 回答