以正确的方式使每个

时间:2019-06-23 14:33:08

标签: ruby-on-rails ruby-on-rails-5

我在movie_controller中添加了这个

  def the_followers
    @movie = Movie.find(params[:id])
    @followings = @movie.followings.where(user_id: params[:user_id])
                   .page(params[:page]).per(10)

    render layout: nil
  end

the_followers是视图/电影/ the_followers中的文件名

在电影(查看)中,我添加了此内容。但是它没有用。为什么?

<% @followings.each do |following| %>
  Username: <%= following.user.username %>
<% end %>

我有一个空白列表。我有想念吗?

2 个答案:

答案 0 :(得分:0)

如果列表为空,您可能会有其他问题。尝试按照以下步骤找出问题所在。

删除范围

@followings = Following.all.paginate(page: 1, per_page: 100)

一个一个地添加它们

@followings = @movie.foollowings.all.paginate(page: 1, per_page: 100)

然后尝试

@followings = @movie.foollowings.where(user_id: params[:user_id]).paginate(page: 1, per_page: 100)

最终

@followings = @movie.followings.where(user_id: params[:user_id])
                   .page(params[:page]).per(10)

请自行检查数组在什么步骤变为空。

答案 1 :(得分:0)

您可以使用最简单的调试方法来定位问题。

def the_followers
  @movie = Movie.find(params[:id])
  # Check movie followings array is empty?
  puts "---movie following num: #{@movie.followings.count}---"
  # Check the user_id param is present?
  puts "---user_id: #{params[:user_id]}---"
  # Check movie followings with user_id is empty?
  puts "---movie following with user_id num: #{@movie.followings.where(user_id: params[:user_id]).count}---"
  @followings = @movie.followings.where(user_id: params[:user_id])
               .page(params[:page]).per(10)
  # Check the result is empty?
  puts "---result num: #{@followings.count}---"
  render layout: nil
end

如果一切正确,请检查视图代码。