0
私は作品とそのクレジットでサイトを構築しています。私が達成しようとしているのは、クレジットの相互のタイトルに基づいて各作品の類似の作品を見つけることです。Ruby on Rails:配列内のオブジェクトの属性にアクセスできない
私はそれぞれの類似の作品を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: {}
ありがとうございました。 @ similar_work.compact!働いた。 最初に問題が発生した理由を説明してください。私は何が恋しいのですか? ありがとう – fahrio
よろしくお願いいたします。この行のためです: '@similar_works << credit2.work'。すべてのcredit2に作業があるかどうかはチェックしないので、配列にnil値を追加します。次のようなもので簡単にデバッグすることができます:「現在、クレジット#{クレジット2}に対応する作業番号{credit2.work}」を追加します。 投票して、答えをあなたのために良いものとしてマークしてください:) –