Ruby on Rails: невозможно получить доступ к атрибутам объекта в массиве - PullRequest
0 голосов
/ 31 июля 2009

Я строю сайт с работами и их кредитами. Чего я пытаюсь добиться, так это найти похожие работы каждой работы на основе взаимных названий в их титрах.

Я добавляю каждую подобную работу в массив в цикле for, и когда я пытаюсь получить доступ к атрибутам этих работ, я получаю «нулевой объект, когда вы этого не ожидали!» . Я могу видеть объекты Work, когда отлаживаю в массиве, но не могу получить доступ к их атрибутам. Вот код:

class Work < ActiveRecord::Base

  def similar_works
    @similar_works
  end

  def find_similar_works
    @similar_works = []
    for credit in self.credits
      same_credits = credit.title.credits #same credits with mutual titles
      for credit2 in same_credits
        @similar_works << credit2.work
        end
    end
  end

end



class WorksController < ApplicationController

  def index
    list
    render(:action => 'list')
  end

  def list
    # find similar works for each work
    @works.each do |work|
      work.find_similar_works
    end
  end

end



list.html

<% for work in @works -%>
<% for similarwork in work.similar_works%>
    <%= similarwork.name%> => nil object
    <%=debug(similarwork)%> => sample debug output is below
<% end %>
<% end %>



--- !ruby/object:Work 
attributes: 
  name: Borozan
  updated_at: 2009-07-31 12:30:30
  created_at: 2009-07-31 12:25:32
attributes_cache: {}

--- !ruby/object:Work 
attributes: 
  name: Boom
  updated_at: 2009-07-31 12:30:30
  created_at: 2009-07-31 12:25:32
attributes_cache: {}

--- !ruby/object:Work 
attributes: 
  name: Kamuflaj
  updated_at: 2009-07-31 12:30:30
  created_at: 2009-07-31 12:25:32
attributes_cache: {}

1 Ответ

2 голосов
/ 31 июля 2009
  1. Переменная имеет значение null, а не ее атрибут.
  2. Вставьте весь стек, пожалуйста.
  3. Вставьте результат следующей строки: <% = debug (work.simil_works)%>
  4. Возможно иметь значение nil в вашем массиве. Исправьте свою функцию:

    def find_s Similar_works # .. делай свои вещи # затем удалите нулевые значения @ Similar_works.compact! конец

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