Rails рендерит частичное с коллекцией дважды - PullRequest
1 голос
/ 24 октября 2011

У меня есть это:

<%= render :partial => "rewards", :collection => @rewards, :as => :reward %>

когда я считаю элементы в коллекции с <%= @rewards.count %>, он показывает 1, и я проверяю, что есть только одна награда. Тем не менее, часть отображается в моем главном представлении дважды, а второй пустой (награда == ноль). Любая подсказка по этому поводу?

Обновление: Выяснили причину, перед этим оператором рендеринга есть оператор user.rewards.build для создания формы:

<%= render :partial => "form_reward", :locals => {:user => @user, :reward => @user.rewards.build } %>
<%= render :partial => "rewards", :collection => @rewards, :as => :reward, :locals => {:user => @user } %>

каким-то образом частичный рендеринг этого объекта тоже! Я думаю, это потому, что загрязнение имени. Теперь, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Я бы посоветовал вам проверить запрос на заполнение @rewards. Похоже, что в коллекции @reward есть два объекта: объект Reward и объект nil.

Вы можете использовать компактный метод коллекции для удаления объекта nil.

0 голосов
/ 24 октября 2011
<%= render :partial => 'rewards', :object => @rewards, :as => :reward %>

Вы должны быть в состоянии получить доступ к нему как reward, чтобы проверить, попробуйте это:

<%= reward.inspect %>

Ооо и, если это повторяется, вы должны передать его как :collectionвместо :object как в моем примере

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