сделать каждый в правильном пути - PullRequest
0 голосов
/ 23 июня 2019

В 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 - это имя файла в представлении / movies / the_followers

в фильме (просмотр) Я добавил это.но это не сработало.Почему?

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

У меня есть пустой список.Я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Вы можете использовать самый простой метод отладки, чтобы найти проблему.

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

Если все правильно, проверьте код просмотров.

0 голосов
/ 23 июня 2019

У вас могут быть разные проблемы с пустым списком.Чтобы устранить проблему, выполните следующие шаги.

удалите области

@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)

Посмотрите для себя, на каком шаге ваш массив становится пустым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...