ошибка полиморфной ассоциации - PullRequest
1 голос
/ 01 марта 2012

Я использую полиморфную ассоциацию.

У меня есть 2 модели статей и события, которые имеют has_many ассоциацию с моделью комментариев с использованием полиморфной ассоциации

Внутренний контроллер комментариев:

def index

  @commentable = find_commentable

  @comments = @commentable.comments

end

def find_commentable

  params.each do |name, value|

    if name =~ /(.+)_id$/

      return $1.classify.constantize.find(value)

    end

  end

  nil

end

Внутренняя статья и модель события, которую я написал:

has_many :comments, :as => :commentable,:dependent => :destroy

Внутренняя модель комментариев:

belongs_to :commentable, :polymorphic => true

Внутренние маршруты:

resources :articles do
resources :comments

end

Моя проблема

1) При вводе http://localhost:3003/articles/8/comments выдается следующая ошибка:

undefined method `comments' for nil:NilClass

2) Также я не хочу использовать вложенные маршруты, я хочу использовать простые маршруты.Как я могу добиться того же, что и этот код?

1 Ответ

0 голосов
/ 01 марта 2012
  1. Вы получаете эту ошибку, потому что @commentable равен nil.У вас есть статья с идентификатором 8?Функция find_commentable возвращает правильно комментируемый?Я думаю, что ответ на один из этих двух вопросов - «нет».

  2. Если вы не хотите использовать вложенные маршруты, вы можете просто сделать resources :comments, но вы должны быть увереныпередать commentable_type и commentable_id как параметры в контроллер;иначе вы не сможете найти комментируемый класс, чтобы получить его комментарии.

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