Правильное отображение Rails частично при сборе предметов - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть две модели / контроллеры, которые по сути дублируют данные (только на разных страницах). Когда я перебираю коллекцию на одном из контроллеров, она работает так, как задумано, однако, когда я запускаю коллекцию через партиал на другом контроллере, он создает другой «объект»

def show (users_controller.rb)
  ...
  @missions = @user.missions
  @mission = current_user.missions.build
  ...
end


def index (missions_controller.rb)
  ...
  @missions = @user.missions
  @mission = current_user.missions.build
  ...
end

Когда я вызываю render @missions (app / views / missions / _mission.html.erb) для файлов show.html.erb и index.html.erb. Он работает как положено на Users_controller, но создает дополнительный "объект" на Missions_controller. Кажется, при рендеринге коллекции отображаются переменные @mission и @missions в контроллере.

Почему и как я могу это исправить? Я попытался переместить партиал в каталог с общим представлением, но проблема остается. Я предполагаю, что это связано с тем, как я назвал мои переменные экземпляра? Я супер тупик. Спасибо, ребята

1 Ответ

1 голос
/ 23 февраля 2012

Это всего лишь предположение, но я бы сказал, что это, вероятно, происходит потому, что создаваемая миссия включена в @ user.missions. Критерии не оцениваются, пока они на самом деле не используются (вызывая .all или .each или что-то), поэтому, используя current_user.missions.build, вы добавляете пустую миссию в конец @ user.missions ... при условии, что current_user и @user - это одно и то же.

Таким образом, вы, вероятно, можете это исправить, изменив вызов на @missions = @user.missions.all, что приведет к немедленной оценке его до того, как построенная миссия будет добавлена ​​в конец.

Как я уже сказал, просто предположение!

...