ポリモーフィックな関係を作成して表示しようとしています。
ここで私の関係
events
has_many :comments, :as => :commentable
users
has_many :comments, :as => :commentable
comments
belongs_to :comments, :polymorphic => true
コメントには次のモデルがあります
# commentable_id :integer
# commentable_type :string(255)
今、私の目標は、イベントに関連する event#index アイテムに表示されるだけでなく、各イベントに従ってすべてのコメントを表示することです。
********************* *********************
Event.title Event.title
Event.description Event.description
{Comment.body} {Comment.body}
... ...
********************** **********************
等々。
ここに私のコントローラー
def index
@mosttop = Event.all[1..-1]
@loc = @mosttop.comments
end
ただし、これを行うと、未定義の場所が表示されます。私は何が間違っているのだろうかと思っています。また、私のルートは次のとおりです
resources :events do
resources :comments do
end
また、現時点では、ビルドを使用してリレーションシップを作成していませんが、リンクevent/1/comments
して作成するときだけです
コントローラーは次のとおりです
def create
@comment = @commentable.comments.new(params[:comment])
...
end
private
def load_commentable
resource, id = request.path.split('/')[1,2]
@commentable = resource.singularize.classify.constantize.find(id)
end
end